![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective c++
文章平均质量分 85
Kaycsdner
Nothing is impossible for a willing heart!!!
展开
-
设计与声明(二)
条款22:将成员变量声明为private成员变量可以是public,也可以是private,但是前者为什么不建议采用呢?首先从语法的一致性说起。如果成员变量不是public,那么客户唯一能够访问对象的办法就是通过成员函数。如果public的都是函数,客户就不需要在访问class成员的时候迷惑的记着是否应该使用圆括号。因为public的都是方法,没有成员变量。另一个理由是使用函数可以对成员变原创 2016-09-25 12:19:53 · 330 阅读 · 0 评论 -
effective c++ 之实现
条款26:尽可能延后变量定义式的出现时间只要定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序的控制流到达和离开这个变量时,就要承担构造和析构的成本。//这个函数过早定义变量“encrypted”stringencryptPassword(const std::string& password) { using namespace std; string enc原创 2016-11-27 17:04:42 · 449 阅读 · 0 评论 -
设计与声明(一)
条款18:让接口容易被正确使用,不易被误用开发一个“容易被正确使用,不易被误用”的接口,首先必须考虑用户会做出什么样的错误。以下为例:class Date{public: Date(int month, int day, int year); …};乍见之下这个接口通情达理,但是至少容易犯两个错误。第一,他们可能以错误的次序传递参数;第二, 他们可能传递一个无原创 2016-08-31 23:49:22 · 337 阅读 · 0 评论 -
static变量的初始化和赋值的区别
事实胜于雄辩,啥也别说,code说明问题:int add(int a, int b){ static int result = a + b; return result;}int _tmain(int argc, _TCHAR* argv[]){ int a = add(2, 1); int b = add(3, 4); if ( a== b) cout << 1原创 2016-08-30 20:40:52 · 39435 阅读 · 1 评论 -
3、资源管理
条款 13: 以对象资源管理在以对象管理资源的理念中,关键的两个想法就是:(1)获得资源后立即放入管理对象内;实际上“以对象管理资源”的观念常被称为“资源取得时机就是初始化时机”(Resource Acquisition Is Initialization; RAII),因为我们几乎总是可以在获得一笔资源后于同一语句内以它初始化某个管理对象,也可能是赋值某个对象。(2)管理对象运用析构函数原创 2016-02-29 15:34:22 · 425 阅读 · 0 评论 -
2、构造、析构和赋值运算
条款 5:了解c++默默编写并调用了哪些函数当你定义一个类,如果自己 没有声明,那么编译器会自动声明拷贝构造函数、复制操作符、析构函数和默认构造函数,并且都是inline和public。但是值得注意的是,所有编译都会自动生成这些函数,这些都只是c++语法的要求,然而在实际开发中,编译器会进行优化,并没有生成拷贝构造函数和默认构造函数,只有四种情况下才生成:默认构造函数和拷贝构造函数所以必须原创 2016-02-24 16:11:48 · 452 阅读 · 0 评论 -
1、让自己习惯c++
条款 2:尽量使用const、enum、inline替换#define首先,由于#define是在预处理阶段对代码中的字符串进行替换,安全没有任何安全检查,而且一旦程序由于宏替换引发的任何错误,错误提示只会显示替换后的数值,根本无法找到具体的某个宏导致的错误。其次,#define并不重视作用域,一旦宏被定义,其后面的编译过程都有效(除非#undef),因此不提供任何封装性;最后,#define原创 2015-11-23 20:38:44 · 479 阅读 · 0 评论 -
effective c++之继承与面向对象设计
条款32:确定你的public继承塑模出is-a关系请记住:1. “public继承”意味着is-a。适用于baseclasses身上的每一件事情一定也适用于derived classes身上,因为每一个derived class对象也都是一个base class对象。条款33:避免遮掩继承而来的名称在C++的继承体系中,不管是变量名还是函数名称的查找按照一定的规则原创 2017-01-22 22:41:06 · 352 阅读 · 0 评论 -
effective c++之模板与泛型编程
条款41: 了解隐式接口和编译期多态本条款主要是两个概念,即什么是隐式接口,什么是编译期多态。面向对象编程世界总是以显式接口(explicit interfaces)和运行期多态(runtimepolymorphism)解决问题。例如:class Widget { public: Widget(); virtual ~Widget(); virtual std::si原创 2017-06-11 16:02:36 · 400 阅读 · 0 评论