代码改变世界

随笔档案-2016年08月

Effective C++ 6.继承与面向对象设计

2016-08-30 20:10 by szn好色仙人, 189 阅读, 收藏,
摘要: //条款32:确定你的public继承塑模出is-a关系 // 1.public继承意味着is-a的关系,适用在基类上的方法都能用于派生类上。 //条款33:避免遮掩继承而来的名称 // 1.在public继承体系中,派生类和基类的关系是is-a的关系,所以派生类中不应该隐藏基类的非虚函数。 // 2.为了在派生类中重载基类的非虚函数,可以使用using声明式,或者在派生类的... 阅读全文

Effective C++ 5.实现

2016-08-29 20:47 by szn好色仙人, 168 阅读, 收藏,
摘要: //条款26:尽量延后变量的定义式出现的时间 // 1.不仅应该延后变量的定义,更应该直到使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初始值为止。如果这样,不仅能够避免构造和析构的非必要操作,还可以避免毫无意义的调用默认构造函数带来的开销。 //条款27:尽量少做转型动作 // 1.尽量以C++风格的转型替代C风格的转型,前者更加安全。 // 2.const_cast 通常用来... 阅读全文

Effective C++ 4.设计与声明

2016-08-16 20:48 by szn好色仙人, 179 阅读, 收藏,
摘要: //条款18:让接口容易被正确使用,不易被误用 // 1.如果客户企图使用某个接口而却没有获得他所预期的行为,那么这个代码就不该通过编译。 // 2.促进正确使用的方法包括接口的一致性,以及与内置类型的行为兼容。 // 3.阻止误用的方法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。 // 4.shared_ptr支持自定义删除器,可以方便的用于管理各种资源。 ... 阅读全文

Effective C++ 3.资源管理

2016-08-09 20:21 by szn好色仙人, 223 阅读, 收藏,
摘要: //条款13:以对象管理资源 // 1.C++程序中最常使用的资源就是动态分配内存,并且还包括文件描述器,互斥锁,GDI对象、数据库连接、网络socket等。不管哪一种资源,当不再使用的时候必须将其归还给系统。 // 2.诸如以下代码: void fun(int *p) { ... ... delete p; }//以上代码中,p是指向动态分配的内存,在此... 阅读全文

Effective C++ 2.构造 析构 赋值运算

2016-08-03 20:50 by szn好色仙人, 232 阅读, 收藏,
摘要: //条款07:为多态基类声明virtual析构函数 // 1.若基类的析构函数不定义为虚函数,由于基类的指针或引用可以指向派生类的对象,则在删除基类对象的时候可能会出错,导致破坏数据结构。 // 2.如果一个类不含有虚析构函数,那么通常表示它并不希望其本身成为一个基类。 // 3.不要为普通的类声明一个虚析构函数。这是因为C++为了实现虚函数,会建立一个由函数指针构成的数组,称... 阅读全文