#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, поэтому, пожалуйста, помогите мне разобраться с примером.
Случай 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
член / подобъект, который имеет недоступный (частный) оператор присваивания копии.
Других решений пока нет …