思考
文章平均质量分 50
Kill-IT
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于“对象成员”的析构函数
成员初始化列表直接在对象创建时初始化成员,避免了先调用默认构造函数,再进行赋值的开销。让我们来分析,在C++中,初始化列表和在构造函数里赋值有什么区别,就可以得出该结论。这是在对象创建后,构造函数体执行时进行的。如果成员是一个类对象,这种方式会调用该类对象的默认构造函数,然后再通过赋值操作进行初始化。初始化列表:在构造函数的头部,通过成员初始化列表对类的成员进行初始化。从上图中,我们可以看出,Phone类的析构函数只被调用了一次。从上图中,我们可以看出,Phone类的析构函数被调用了两次。原创 2023-12-12 19:26:45 · 456 阅读 · 0 评论 -
关于“浅拷贝”的问题
根据“浅拷贝”的概念——如果属性是基本类型,拷贝的就是基本类型的值;在完成p2的析构函数之后,p1,p2指向的空间已经被释放掉了,此时的p1为野指针,p2为空指针。但在执行p1析构函数中的delete m_Height时,相同的一片空间被再次释放,此时就会报错。因为野指针不能判断是否为NULL来避免,所以在执行p1的析构函数时,同样也可以进入if语句。根据栈区先进后出的特点,析构函数先清理对象p2,再清理对象p1.此文章是关于“堆区的内存被重复释放”的问题。原创 2023-12-11 22:53:34 · 439 阅读 · 1 评论
分享