【发布时间】:2013-05-27 07:25:12
【问题描述】:
#include <iostream>
using namespace std;
class ClassA
{
const int a;
int b, c;
public:
ClassA(int x, int y):a(10)
{
b = x;
c = y;
}
ClassA():a(10)
{
}
void print()
{
cout << a << endl;
}
};
int main()
{
ClassA objA(10, 20);
ClassA objB;
objB = objA;
objB.print();
return 0;
}
编译器在下列情况下不会创建复制赋值运算符:
- 类具有 const 类型或引用类型的非静态数据成员。
- 类有一个类型的非静态数据成员,它有一个不可访问的复制赋值运算符。
- 类派生自具有不可访问的复制赋值运算符的基类。
在上述情况下,我通过上述示例理解了情况 1。但我没有得到案例 2 和案例 3,所以请通过一些例子帮助我理解。
【问题讨论】:
-
这几乎是 stackoverflow.com/questions/4338073/… 的副本(请查看 aschepler 的答案以获取案例 3 的示例)。
标签: c++ copy-assignment