读书人

两个基本的有关问题

发布时间: 2012-03-31 13:13:26 作者: rapoo

两个基本的问题
为什么
1 可以阻止类的一个对象赋给另一个对象,只要把赋值运算符声明为这个类的private成员即可达到此目的
2 可以阻止类对象的复制,只需要把这个类重载的赋值运算符和拷贝函数声明为private
新手 越详细越好 谢谢

[解决办法]
class Test{....};
Test obj1,obj2;

Test obj3=obj1;编译器为之调用拷贝构造函数,如果拷贝构造函数的访问控制为private那么在编译器阶段就会被拒绝。(不可访问拷贝构造函数)同理 obj2=obj1;调用operator=(const Test&);理由同前
[解决办法]
赋值 和 拷贝就也就是在类外可以调用的,因为为public
你声明为private:在类外就不能访问了
[解决办法]
因为你的对象 在外面复制 和拷贝时是调用这两个函数 的!因为是在类外可以调用public函数!所以可以用这两个函数!但是你声明为private的话 也就是在类外不能访问 这两函数 了
[解决办法]
参考:
C++类中的4个特殊函数 - 缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数

读书人网 >C++

热点推荐