我正在编写这个程序,我在其中定义了一个class X
并手动定义了它的构造函数和析构函数,以便我可以在每个函数中都有一个print语句并查看它们何时被调用。定义我自己的拷贝构造函数
但是,问题似乎与我的复制构造函数的定义。
它提供了以下错误:
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;
};
如果我是从拷贝构造函数的参数去除常量它编译没有错误。 – 2015-02-24 05:53:04
复制构造函数的参数应该是'const'。问题是'getI'不是。 – 5gon12eder 2015-02-24 05:54:19
@ 5gon12eder:好的,但为什么复制构造函数应该有const? – 2015-02-24 06:04:01