cape的博客

技术博客

Effective C++ 条款36:绝不重新定义继承而来的non-virtual函数

知识点: 多态时:基类(或子类)指针指向子类对象,利用该指针调用成员时关键点看子类对象 非多态时:基类(或子类)指针指向子类对象时,利用该指针调用成员时关键点看指针 对于基类B和子类D:class B{ public: void mf(); ... }; class D:publi...

2017-10-16 20:05:55

阅读数 174

评论数 0

Effective C++ 条款33:避免遮掩继承而来的名称

考虑下面这段代码:int x; void someFunc() { double x; //local variable std::cin>>x; //read a new value to local x }作用域图如下: 这个指涉的是local变量x,...

2017-10-02 18:51:52

阅读数 165

评论数 0

Effective C++ 条款25:考虑写出一个不抛异常的swap函数

考虑写出一个不抛出异常的swap函数本节讲解如何自定义一个高效的swap函数对于std名空间中的swap缺省函数如下所示namespace std{ template<typename T> void swap(T& a, T& b) { ...

2017-09-23 11:35:57

阅读数 113

评论数 0

Effective C++ 条款20:尽量用传引用替换传值

避免浪费时间空间默认情况下,C++的函数调用是传值调用,也就是说形参拷贝实参的内容。考虑以下继承体系:class Person { private: string name; string address; public: Person(){} virtual ~P...

2017-09-20 10:39:44

阅读数 247

评论数 0

Effective C++ 条款14:在资源管理器中小心coping行为

上节是对资源的管理说明,有时候我们不能依赖于shared_ptr或者auto_ptr,所以我们需要自己建立一个资源管理类来管理自己的资源。例如建立一个类来管理Mutex锁,现在使用函数处理类型为Mutex的互斥器对象class Lock{ public: explicit Lock(Mut...

2017-09-08 11:17:02

阅读数 123

评论数 0

Effective C++ 条款9:绝不在构造和析构过程中调用virtual函数

建议 在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层) 换句话说:在构造函数和析构函数中,virtual函数失去多态性。 试想一下,假设此时在构造函数和析构函数中,virtual函数没有失去多态性,会出现什么问题。...

2017-09-04 11:22:17

阅读数 106

评论数 0

Effective C++ 条款8:别让异常逃离析构函数

建议 析构函数绝对不要吐出异常.如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序. 如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么 class 应该提供一个普通函数(而非在析构函数中)执行该操作. 两点理由 如果析构函数抛出异常,...

2017-09-04 10:13:15

阅读数 135

评论数 0

Effective C++ 条款5:了解C++默默调用并编写了哪些函数

1)编写一个空类,经过编译后,C++默认编写了4个函数。class Empty{};经过编译器处理后会有默认构造函数、复制(拷贝)构造函数、赋值操作符和析构函数。这些函数都是public且inline的。class Empty{ public: Empty(){} Empty(co...

2017-08-31 16:25:40

阅读数 112

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭