Я писал эту программу, где я определил class X
и вручную определил ее конструкторы и деструктор, чтобы я мог иметь оператор печати в каждом из них и видеть, когда они вызываются.Определение моего собственного конструктора копирования
Однако проблема связана с моим определением конструктора копирования.
Это дает следующее сообщение об ошибке:
warning: passing
const X
asthis
argument ofint X::getI()
discardsconst
Что является причиной этой ошибки?
Фрагмент кода класса:
class X {
public:
X() {
cout << "Default Constructor called\n";
i = 0;
}
X(int i) {
cout << "Parameterized Constructor called\n";
this->i = i;
}
X(const X& x) {
cout << "Copy Constructor called\n";
i = x.getI();
}
~X() {
cout << "Destructor called\n";
}
int getI() {
return i;
}
private:
int i;
};
Он компилируется без ошибок, если я удалить сопзЬ из аргумента конструктора копирования. –
Аргумент конструктора копирования должен быть действительно 'const'. Проблема в том, что 'getI' - нет. – 5gon12eder
@ 5gon12eder: Хорошо, но почему конструктор копирования имеет const? –