gpt4 book ai didi

c++ - 虚拟运算符 float()

转载 作者:行者123 更新时间:2023-11-30 02:09:49 26 4
gpt4 key购买 nike

我想知道下面代码中virtual operator float()方法的含义,是用来类型转换的吗?

#include <iostream>

class Frac
{
protected:
int a, b;
public:
Frac(int x, int y):a(x),b(y)
{}

virtual operator float()
{ return (float)a/b; }

friend void Print(Frac var)
{ std::cout << var << endl; }
};


class TwiceFrac : public Frac
{
public:
TwiceFrac():Frac(1,2)
{}
virtual operator float()
{ return (float)a/b * 2; }
};

int main()
{
TwiceFrac obj;
Print(obj);
}

最佳答案

该代码定义了一个类对象到 float 的隐式转换。多变的。当你做 cout << var << endl; operator floatvar 上调用对象将其转换为 floatfloat打印返回值。

virtual关键字允许派生类覆盖基类中定义的函数。要利用此多态性,您需要更改 Print 的签名获取 Fanc 的 reference 的函数(即 Print(Franc& var) )。然后根据传递给函数的对象类型,适当operator float将被调用。

关于c++ - 虚拟运算符 float(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com