类中包含const成员变量时,怎么定义 拷贝赋值函数 ?
类中包含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 ; }
*/
把它注释掉,
这里没用 ...
#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 ; }
*/
把它注释掉,
这里没用 ...