上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: 在你未预料的情况下,它可能会调用析构函数。 阅读全文
posted @ 2019-09-29 16:12 机智的小小帅 阅读(169) 评论(0) 推荐(0)
摘要: 引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的。 先看代码: 程序结果为: 现象:先调用TestClass1的构造函数,再调用TestClass2的构造函数。 原因:在类Test中,m_tc1变量声明在m_tc2变量之前,故m_tc1在m_tc2之前初始化。 问题:在列表 阅读全文
posted @ 2019-09-28 10:51 机智的小小帅 阅读(5742) 评论(0) 推荐(2)
摘要: hashvalue的值一直为0,何解? 因为 左移 运算符的优先级很低,所以上面的表达式结果时这样的: 正确姿势: 阅读全文
posted @ 2019-09-27 15:44 机智的小小帅 阅读(522) 评论(0) 推荐(0)
摘要: 以前学智能指针时有点想当然了,一直以为智能指针很智能,不管你让它管理的是单个资源还是连续的资源它都能正确的将资源释放,现在发现自己大错特错。 先看代码: case1:管理单个资源 这种情况是没有问题的,程序结束时自动释放资源,控制台输出"Test is construct" 和 "Test is d 阅读全文
posted @ 2019-09-27 14:15 机智的小小帅 阅读(1607) 评论(0) 推荐(0)
摘要: 原因:关于const的问题 具体错误:函数的参数列表中参数签名为const,但是却调用了该参数的非const的成员函数 例子: 即使我们知道NoConst()并不会改变类的data成员,编译器依旧会报错。 解决办法:在NoConst的函数签名后面加上const。 总结:const对象不能调用非con 阅读全文
posted @ 2019-09-16 22:38 机智的小小帅 阅读(308) 评论(0) 推荐(0)
摘要: 第一步:在Visual Studio中配置命令行环境(Command Prompt) 来自:https://blog.csdn.net/u013553529/article/details/77417058 点击:工具->外部工具->添加 标题:Command Prompt 命令:C:\Window 阅读全文
posted @ 2019-09-11 20:40 机智的小小帅 阅读(359) 评论(0) 推荐(0)
摘要: 引子:我们知道,在调用构造函数时,构造函数会自动初始化其非静态成员,如: 结果: 探索:那么构造函数能默认初始化其静态成员么?做个实验便知: case1:不在函数外部定义 nsm,在main函数里也不定义StaticMember的实例 结果: 结论:在程序编译期间并不会自动初始化类中的静态成员。 c 阅读全文
posted @ 2019-09-11 10:42 机智的小小帅 阅读(1339) 评论(0) 推荐(0)
摘要: case 1:在类外定义构造函数,所有data member都在初始化列表中进行初始化。 结果: 第一次默认构造:来自main函数中定义的变量sc; 第二次拷贝构造:来自形参拷贝实参; 第三次拷贝构造:来自data member 拷贝形参。 结论:与类内定义一样。 case 2:在类外定义构造函数, 阅读全文
posted @ 2019-09-10 23:31 机智的小小帅 阅读(2768) 评论(2) 推荐(0)
摘要: 代码如下: 注意一下我打断点的位置。 最后的结果: 在程序进入MyTest()的函数体之前,控制台就打印出来了I have been constructed。 即:在进入构造函数的函数体之前,类中的成员变量就已经被初始化了! 阅读全文
posted @ 2019-08-28 08:41 机智的小小帅 阅读(550) 评论(0) 推荐(0)
摘要: 先上代码 当用初始化列表时,输出如下: 当不用初始化列表时: 总结:当不用初始化列表进行初始化时,先调用默认构造函数构造了类成员,然后再调用赋值运算符对之前默认构造的类成员进行赋值,这实际上进行了两步操作。 当用初始化列表了,程序直接调用了拷贝构造函数,只需要一步操作。 阅读全文
posted @ 2019-08-19 16:04 机智的小小帅 阅读(2150) 评论(0) 推荐(2)
上一页 1 ··· 3 4 5 6 7 8 9 下一页