随笔分类 -  C++ 构造与析构

摘要:在C++中,一个类有八个默认函数: 1、默认构造函数; 2、默认拷贝构造函数; 3、默认析构函数; 4、默认重载赋值运算符函数; 5、默认重载取址运算符函数; 6、默认重载取址运算符const函数; 7、默认移动构造函数(C++11); 8、默认重载移动赋值操作符函数(C++11)。 只是声明一个空 阅读全文
posted @ 2020-12-21 20:59 findumars 阅读(757) 评论(0) 推荐(0) 编辑
摘要:之前在上C++的课的时候,印象中有那么一句话:如果一个类没有任何构造函数,那么编译器会生成一个默认的构造函数 今天在看《深度探索C++对象模型》的第二章:“构造函数语意学”的时候发现之前听到的说法是错误的。 比如说如下代码: class A {public: int a;}; int main(vo 阅读全文
posted @ 2019-11-07 00:43 findumars 阅读(839) 评论(0) 推荐(0) 编辑
摘要:移动构造函数应用最多的地方就是STL中 给出一个代码,大家自行验证使用move和不适用move的区别吧 https://www.cnblogs.com/qingergege/p/7607089.html 阅读全文
posted @ 2019-07-10 18:51 findumars 阅读(477) 评论(0) 推荐(0) 编辑
摘要:C++11新特性学习笔记之移动构造函数指针成员和浅拷贝一般来说,如果一个类中有指针成员,则要小心拷贝成员函数的编写,因为如果不注意,则会造成程序的内存泄漏。如下所示的例子。 #include <iostream> class HasPtrMem{ public: HasPtrMem() : m_da 阅读全文
posted @ 2019-07-10 18:50 findumars 阅读(947) 评论(0) 推荐(0) 编辑
摘要:get的时候,生成的 那个对象赋值给aa 生成的对象在这条语句完 就析构了: https://blog.csdn.net/qq_31759205/article/details/80544468https://blog.csdn.net/Windgs_YF/article/details/80899 阅读全文
posted @ 2019-07-09 21:28 findumars 阅读(286) 评论(0) 推荐(0) 编辑
摘要:今天收到盛大的面试,问我一个问题,关于派生类中如何初始化基类对象,我在想派生类对于构造函数不都是先构造基类对象,然后在构造子类对象,但是如果我们在成员初始化列表先初始化派生类的私有成员,在函数内去调用基类的构造函数,能编译通过吗?或者当我们定义了基类的默认构造函数,而没有去在派生类的构造函数中显示的 阅读全文
posted @ 2018-09-29 06:08 findumars 阅读(1347) 评论(0) 推荐(0) 编辑
摘要:要点10、为什么继承一个没有虚析构函数的类是危险的? 一个没有虚析构函数的类意味着不能做为一个基类。如std::string, std::complex, 和 std::vector 都是这样的。为什么继承一个没有虚析构函数的类是危险的?当你公有继承创建一个从基类继承的相关类时,指向新类对象中的指针 阅读全文
posted @ 2018-02-05 17:17 findumars 阅读(844) 评论(0) 推荐(0) 编辑
摘要:按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换 阅读全文
posted @ 2017-08-01 20:54 findumars 阅读(973) 评论(0) 推荐(0) 编辑
摘要:explicit研究 explicit是C++中的关键字,不是C语言中的。英文直译是“明确的”、“显式的”意思。出现这个关键字的原因,是在C++中有这样规定的基础上:当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换。先看类型转换。 http://blog.csdn.net/guodo 阅读全文
posted @ 2017-07-28 20:14 findumars 阅读(927) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/guodongxiaren/article/details/24885023 阅读全文
posted @ 2017-07-28 20:11 findumars 阅读(455) 评论(0) 推荐(0) 编辑
摘要:环境:XPSP3 VS2005 今天黑总给应聘者出了一个在C++的构造函数中调用虚函数的问题,具体的题目要比标题复杂,大体情况可以看如下的代码: [cpp] view plain copy class Base { public: Base() { Fuction(); } virtual void 阅读全文
posted @ 2017-07-05 21:15 findumars 阅读(877) 评论(0) 推荐(0) 编辑
摘要:在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思 阅读全文
posted @ 2016-08-26 17:43 findumars 阅读(1010) 评论(1) 推荐(0) 编辑
摘要:记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客(点击打开链接),感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再次遇到深拷贝与浅拷贝,认真分析了,写写自己的心得吧。 先说下自己的理解吧,浅拷贝,即在定义一个类A,使用类似A  阅读全文
posted @ 2016-08-24 22:21 findumars 阅读(2610) 评论(0) 推荐(0) 编辑
摘要:多次碰到某些情况,在不同的情况下需要使用不同的构造函数,而且只能使用构造函数来一次性生成对象,而不能在构造函数执行完毕后去设定对象的某个属性。曾经为这个事情很挠头,因为定义在if 语句里的对象,后面的语句是不认识的。 其实这种方法可以用三态语句来很简单的完成,看这里: MyClass *p = us 阅读全文
posted @ 2016-08-07 04:12 findumars 阅读(632) 评论(0) 推荐(0) 编辑
摘要:实验原因 说明如何使用const描述保护类数据不会意外修改. 编译环境 vc6sp6 + win7x64 工程下载 copyConstruction_constMemberFunction.zip 使用非const成员函数,引起的拷贝构造函数报错 [cpp] view plain copy clas 阅读全文
posted @ 2016-02-12 21:27 findumars 阅读(760) 评论(0) 推荐(0) 编辑
摘要:最近在复习QT,准备做项目了,QT Creator 默认生成的代码 explicit Dialog(QWidget *parent = 0)中,有这么一个关键字explicit,用来修饰构造函数。以前在Windows下写程序的时候,基本上没有碰到这个关键字,那么这个关键字是做什么用的呢?关键字 ex... 阅读全文
posted @ 2015-10-16 21:33 findumars 阅读(902) 评论(0) 推荐(0) 编辑
摘要:这是我的感觉,具体需要研究一下~ 找到一篇文章:在构造和析构中抛出异常 测试验证在类构造和析构中抛出异常, 是否会调用该类析构. 如果在一个类成员函数中抛异常, 可以进入该类的析构函数. [cpp] view plain copy /// @file ClassroomExamples.cpp // 阅读全文
posted @ 2015-08-29 19:46 findumars 阅读(1010) 评论(0) 推荐(0) 编辑
摘要:我总是记不住构造函数的特点,关键还是没有领会那个哲学思想:父类的构造函数一方面要初始化它自己的成员数据,另一方面也要建立它自己的VMT呀!心里默念一百遍:一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构... 阅读全文
posted @ 2015-07-28 22:25 findumars 阅读(1131) 评论(0) 推荐(0) 编辑
摘要:看了不少C++书,当讲到静态变量的时候,总是以int成员来举例,是啊,这样很好理解。但是如果这个静态变量是一个对象行不行呢?不仅行,有时候还非常必要,而且别有洞天。比如:// .h 文件class SystemGlobal{public: static ConfigXML* m_pInstance;... 阅读全文
posted @ 2015-06-18 00:34 findumars 阅读(2900) 评论(0) 推荐(0) 编辑
摘要:记得在学校里的时候,曾经这样写过:void MyClass::KillMe(){ delete this;}老师看到这句话的时候,眼珠子都快瞪出来了。但是运行正确啊,没什么问题。现在想起来,这也是一种不错的对象自销毁方式,而不用外部显式调用delete MyObj; 只需调用MyObj.Kil... 阅读全文
posted @ 2015-03-26 17:04 findumars 阅读(2470) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示