rme*_*dor 17
如果它们是普通旧数据(POD)类型,那么这应该有效.任何包含其他类实例的类都可能会失败,因为您在不调用其副本构造函数的情况下复制它们.它失败的最可能方式是它们的一个析构函数将释放一些内存,但是你已经重复指向它的指针,所以你试着从你复制的一个对象中使用它并获得段错误.简而言之,除非它是POD,否则不要这样做,你确定它永远是POD.
Jar*_*Par 10
不,这样做会导致很多问题.您应该始终使用赋值运算符或复制构造函数来复制C++类型.
使用按位复制会破坏任何类型的资源管理,因为在一天结束时,您将留下2个对象,其中1个构造函数已运行,并且将运行2个析构函数.
以ref计数指针为例.
void foo() {
RefPointer<int> p1(new int());
RefPointer<int> p2;
memcpy(&p2,p1,sizeof(RefPointer<int>));
}
Run Code Online (Sandbox Code Playgroud)
现在p1和p2都保持相同的数据,但内部引用计数机制尚未得到通知.两个析构函数都会认为它们是数据的唯一所有者,可能导致值被破坏两次.
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |