首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

operator =(const CText& text)中出现的有关问题

2012-03-02 
operator (const CText& text)中出现的问题classCText{public:CText&operator(constCText&text){this-

operator =(const CText& text)中出现的问题
class   CText    
{
public:
CText&   operator   =(const   CText&   text)  
{
this-> nCount=text.GetCount();//此处出现问题,为什么?
//this-> nCount=text.nCount;//用这种方式却没有问题。
}
int   GetCount()
{
return   nCount;
}
private:
int   nCount;

};
虽然去掉const可以编译通过.
this-> nCount=text.GetCount();//此处出现问题,为什么?
//this-> nCount=text.nCount;//用这种方式却没有问题。


[解决办法]
修改1 GetCount 修改为 常成员函数
修改2 operator = 运算符重载时候, 参数不使用 const 属性 ~
[解决办法]

class A{public:
void print(){ cout < < "hello " < < endl; }
}

A a;
A const b;
a.print(); //ok
b.print(); //error

将print()改成这样就能运行:
void print() const{ cout < <  "hello " < < endl; }

成员函数后面的const 表示这个函数不修改数据成员.
因为常量的基本要求,就是不能改变,因此,常量可以调用的函数也只能是表明不修改数据成员的常函数才符合语义的要求.

b.print(); //ok, 常量可以调用常函数


CText& operator =(const CText& text)
text是个常量,所以要求只能调用常函数.

热点排行