C++中,什么情况下写自定义的赋值运算符重载函数?怎样写?
1个回答
展开全部
C++中,对于基本内置类型,编译器都允许其直接赋值。但是自定义类型,如使用class关键字声明的类对象之间的赋值,编译器也会好心得给你提供一个你看不到的赋值操作,如果类其中都是基本内置类型,编译器的这种默认赋值操作类似于对象之间的内存拷贝,这种情况下是OK的,但如果类中有指针这类指向堆内存的东西或者有其他自定义的类对象且该对象也没有提供赋值重载的话,你自己不做赋值运算符的重载,那依靠编译器的内存copy行为去执行默认的赋值操作的话,后续在引用过程中会出现非法访问的情况。
举个例子
怎么写?
以上只是提到了对象间的赋值常见的一个隐患,c++是一门比较复杂的语言,如果你想实现另外的赋值,比如通过一个字符串给对象赋值,编译器是不会给你提供默认的这种非同类型之间的赋值操作的,所以同样也需要你自己重载赋值运算符,不然编译都过不去。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询