
c++对象本体与对象实体不一致,应该自定义拷贝构造函数。应该怎么理解 最好能举个例子说明不一致是什么意
2个回答
展开全部
我不知道你在哪本书上看的这句话,建议这类书不要看,语句故作晦涩!!
去看一些权威的书!!!言归正传:
对象本体与对象实体一致时,复制构造函数进行的是浅拷贝(默认构造函数会自动完成),即对象a赋值给对象b,将a的所有数据成员值赋给对象b。
这里有个问题就是,如果对象a或类中含有指针,那么对象b得到也只是一个指针,而得不到该指针所指向的内容,两个对象的指针指的是同一个地址,其中一个对象修改了指针指向的内容,另一个对象也会受到影响。这里就会出现对象本体(类)与对象实体(类实例)不一致的情况,需要你自定义复制构造函数,将对象a数据成员中指针所指向的内容赋值给对象b中相应的指针数据成员,通常在对象b中要动态分配内存,这时对象a,b中的指针指向的不再是同一地址,修改其中任何一个对象不会影响另外一个对象。
可以概括为:
对象本体与对象实体一致不一致看是否含有指针,有指针就不一致;无指针就一致。
不知讲明白否。。。
去看一些权威的书!!!言归正传:
对象本体与对象实体一致时,复制构造函数进行的是浅拷贝(默认构造函数会自动完成),即对象a赋值给对象b,将a的所有数据成员值赋给对象b。
这里有个问题就是,如果对象a或类中含有指针,那么对象b得到也只是一个指针,而得不到该指针所指向的内容,两个对象的指针指的是同一个地址,其中一个对象修改了指针指向的内容,另一个对象也会受到影响。这里就会出现对象本体(类)与对象实体(类实例)不一致的情况,需要你自定义复制构造函数,将对象a数据成员中指针所指向的内容赋值给对象b中相应的指针数据成员,通常在对象b中要动态分配内存,这时对象a,b中的指针指向的不再是同一地址,修改其中任何一个对象不会影响另外一个对象。
可以概括为:
对象本体与对象实体一致不一致看是否含有指针,有指针就不一致;无指针就一致。
不知讲明白否。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询