#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;
}
在以下情况下,编译器不会创建复制赋值运算符:
在上述情况中,我通过上述例子理解了案例1。但我没有得到案例2和案例3所以请帮我理解一些例子。
答案 0 :(得分:1)
案例2将是这样的:
class non_assignable {
// note: private
non_assignable &operator=(non_assignable const &source);
};
class whatever {
non_assignable n;
};
案例3类似于:
class whatever : public non_assignable {};
在任何一种情况下,都不会为whatever
自动生成复制赋值运算符,因为它包含non_assignable
成员/子对象,该对象具有不可访问(私有)复制赋值运算符。 / p>