![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Effective C++
xkq02105039
这个作者很懒,什么都没留下…
展开
-
Effective C++ 条款09:绝不在构造和析构过程中调用virtual函数
#include<iostream> using namespace std; #include<string> class Base { public: Base(int val = 0) { fun(); } ~Base() { cout << "基类析构函数" << endl; } virtual void fun() { cout ...转载 2020-10-21 22:10:24 · 104 阅读 · 0 评论 -
Effective C++ 条款08: 别让异常逃离析构函数
场景: 如果对象在运行期间出现了异常,C++异常处理模型有责任清除那些由于出现异常所导致的已经失效了的对象(也即对象超出了它原来的作用域),并释放对象原来所分配的资源, 这就是调用这些对象的析构函数来完成释放资源的任务,所以从这个意义上说,析构函数已经变成了异常处理的一部分。 1.析构函数绝对不要抛出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。 2.如果客户需要对某些函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非原创 2020-10-21 21:26:12 · 106 阅读 · 0 评论 -
Effective C++ 条款33: 避免遮掩继承而来的名称
场景: class继承,子类继承父类函数,部分继承函数被遮掩,无法调用 问题描述: class Base{ private: int x; public: void f(); int f(int); virtual void vf() = 0; virtual int vf(int); virtual void vf1(); }; void Base::f() {} int Base::f(int x) {return x;} void Base::vf() {} int Base::v原创 2020-10-21 19:09:30 · 105 阅读 · 0 评论