C++ copy constructor
发布时间
阅读量:
阅读量
对象赋值中的指针变量成员
逐位复制(bitwise copy) :
众所周知,将一个对象实例分配给具有相同类型的对象(例如 MyClass a=MyClass b),在这一过程中,编译器会自动生成相应的代码,将“源”对象中各个属性的值逐一传递至“目标”对象的对应成员位置,这种操作方式被称作逐位复制(bitwise copy) 。
逐位复制下的普通变量与指针变量 :
在大多数情况下,逐位赋值不会引发任何问题。然而,当某些成员变量为指针类型时,情况便有所不同:当对象成员进行逐位复制后,将会产生两个完全相同的实例。这两个实例中的普通变量虽然名称一致,但各自存储的位置却并不相同。而对于这两个副本实例中同名的指针变量而言,它们所指向的地址却是完全一致的……
漏洞:
若两个实例中的同名指针变量指向了相同的内存地址,则当其中一个对象被销毁时,其所包含的指针资源也将被释放。然而如果另一个副本(对象)仍然在引用该指针,则很可能会引发异常问题!
例如:
构建一个名为 Myclass 的类,在该类中包含一个普通成员变量 test 以及一个指针类型的成员变量 testp:
class Myclass
{
public:
int test; //普通成员变量test
全部评论 (0)
还没有任何评论哟~
