如何将运算符重载函数重载成一般函数形式#include using namespace std;cl

发布时间:2021-03-15 17:14:00

如何将运算符重载函数重载成一般函数形式#include using namespace std;class Cube{ private: double side; public: Cube(double side); double volume(); bool operator

网友回答

你的问题关键出在const成员函数上.这个概念你或许不常见,我先给你说一下,之后给你解决办法.
---------------------const成员函数---------------------------
类的const成员函数的格式为:
返回类型 函数名() const
{...}也就是在函数名后面加一个const.类的这种成员函数不允许改变类的成员数据值,也就是说在这种函数体内,不能有改变(或企图改变)类的成员数据的操作,否则会发生编译错误.
比如:class A
{public:
int a;void f() const
{a = 1;}};这是错误的,因为f()中改变了成员数据a的值.
再如:class A
{public:
int a;void set()
{a = 1;}void f() const
{set();
}};这也是错误的,因为set()函数会改变成员数据的值,在f()中不应调用它.
再如:class A
{public:
int a;void set()
{}void f() const
{set();
}};这仍然是错误的.虽然在set()中并有改变a的值,但由于set()函数不是const函数,编译器仍然“认为”它会改变a的值,所以在f()中也不能调用set().只要一个函数不被const修饰,编译都认为它会改变成员数据的值!
不光const函数如此,被const修饰的对象的值也是不允许改变的.比如你程序中的参数const Cube& aBox.
---------------------你的问题---------------------------
下面我说一下你的程序.
在你的operator
以上问题属网友观点,不代表本站立场,仅供参考!