如何将运算符重载函数重载成一般函数形式#include using namespace std;class Cube{ private: double side; public: Cube(double side); double volume(); bool operator
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 07:21:27
如何将运算符重载函数重载成一般函数形式#include using namespace std;class Cube{ private: double side; public: Cube(double side); double volume(); bool operator
如何将运算符重载函数重载成一般函数形式
#include
using namespace std;
class Cube
{
private:
double side;
public:
Cube(double side);
double volume();
bool operator
如何将运算符重载函数重载成一般函数形式#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