C++编译器帮我们做了些什么
作者:网络转载 发布时间:[ 2014/8/12 10:17:10 ] 推荐标签:.NET C++
2)默认的复制构造函数逐个复制非静态成员(浅复制),复制的是成员的值。如果成员本身是类的对象,则将使用类的复制构造函数复制类的成员对象,静态函数不受影响,因为静态函数属于类本身,不属于任何一个类对象。这里需要注意的问题:对资源的复制。我们需要实现深度复制。比如说,Stack类对象ditto,该对象的str指向一块堆内存。现在利用它初始化另一个对象motto,这里如果简单的对其进行浅复制,则ditto.str和motto.str所保存的内存地址是同一块内存,这显然是不合适的。因此,这里我们应该在复制的同时给motto.str重新分配一块内存,然后将diito.str字符串复制过来,这实现了深度复制。
Stack::Stack (const Stack & st)
{
int len = strlen(st.str);
str = new char[len + 1];
str[len] = '