在C++定义的任意结构(类)中,可以通过一个该类的对象对另一个该类的对象进行赋值,哪怕需要传输的数据中有一个字符数组,请问这个赋值的原理是什么呢?为什么字符数组在不能脱离结构相互赋值(=)呢?谢谢!
类的对象用"="赋值,会对每个成员进行赋值。这时需要考虑“浅拷贝”还是“深拷贝”,主要因为效率问题。
数组的拷贝,如果没有重载"="的话,只会拷贝指针变量。如果在类的析构函数释放该指针,那么两个对象同时释放一个地址的数据就会有问题。
一般的字符串类会重载“=”,像std::string和CString等都是进行深拷贝。std::vector也实现了深拷贝,但CArray是浅拷贝禁止“=”赋值。
重载“=”号
结构如下
返回值类型 operator =(赋值类名 a){//赋值类名指的是a=b时b的类型,
赋值方式;
}