为什么无法禁止复制赋值?
书上说把复制及赋值函数声明为private,但不定义,就可以阻止类外代码及成员函数内部的调用。但是我下面的代码却未能成功阻止,成员函数照样可以调用复制及赋值函数,为什么呢? (编译环境GCC)
#include <stdio.h>
class A
{
public:
A(int i):x(i) {}
int x;
A get() { return A(11); }
// 不完整类型 非引用返回 为什么不出错?
private:
A(const A &);
A& operator =(const A &);
};
A func()
{
return A(7);
}
int main()
{
A a(5);
const A &r = a.get(); // 为什么成员函数可以调用?
const A &rf = func(); // 而普通函数无法调用
printf("%d", r.x);
return 0;
}