读书人

类中包含const成员变量时怎么定义 拷

发布时间: 2012-04-02 19:58:59 作者: rapoo

类中包含const成员变量时,如何定义 拷贝赋值函数 ??
#include <iostream>
using namespace std;


class Test
{
public:
Test(int a,int b):i(a),j(b)
{
}
Test(const Test& t):i(t.i),j(t.j)
{

}
Test& operator = (const Test& t) {
return //如何定义呢 ??}
void show()
{
cout < <i < < ", " < <j < <endl;
}
public:
const int i ;
int j;

};


void main()
{
Test t1(1,2);
Test t2(t1);
t1.show();
t2.show();


}

求教了

[解决办法]
楼主你这并不是拷贝构造函数,而是赋值操作符

赋值操作符的作用是为已经存在的对象进行赋值,

而你定义的这个对象内部有const成员,

所以进行赋值的时候不应该对这个const 成员进行修改,

而且也无法修改

Test& operator = (const Test& t) {
//不对const变量进行操作}
[解决办法]
也就是说,当两个Test的对象,t1和t2定义时,它们体内分别初始化好了一个const数据成员.

既然是const的,所以t1和t2各自拥有一份const数据成员.

在t1=t2这种情况下,t1内部的const成员也不应该被修改,并且无法修改
[解决办法]
赋值的时候不要对这个变量赋值
[解决办法]
楼上说的很好了,我来乱涂.
Test& operator = (const Test& t) {
if(*this==t)return *this;
else j=t.j;
return *this;
}
[解决办法]
/*
Test& operator = (const Test& t) {
return ; }
*/

把它注释掉,
这里没用 ...

读书人网 >C++

热点推荐