
Effective C++
文章平均质量分 74
amoscykl
Casablanca!
展开
-
条款01: 视C++为一个语言联邦
C++的主要的四个次语言:-C。C++仍是以C为基础:区块(blocks),语句(statements),预处理器(preprocessor),内置数据类型(built-in data types),数组(array),指针(pointers)-Object-Oriented C++。这部分是C with Classes所述求的:classes(包括构造函数和析构函数),封装(encapsulat...原创 2018-06-05 23:52:26 · 323 阅读 · 0 评论 -
条款02:尽量以const,enum,inline替换成#define
当使用#define时:#define AS 1.65记号名称AS从未被编译器看见,若运行此常量得到一个编译错误信息时,这个错误信息提到1.65而不是AS. 解决方法是:用一个常量替换宏(#define):const double AS = 1.65;作为语言常量,AS肯定会被编译器看到,当然就会进入记号表. 以常量替换#define两种特殊情况:1.定义常量指针,有必要将指针const。若要定...原创 2018-06-05 23:57:24 · 179 阅读 · 0 评论 -
条款03: 尽可能使用const
面对指针:-若关键字出现在 * 左边,表示被指物是常量(但可以通过其它途径改变被值对象的值,不能通过此指针改变) 若关键字出现在 * 右边,表示指针自身是常量; 若出现在两边,表示被植物和指针两者都是常量 若被指物是常量,有两种写法,意义相同:void f1(const Widget* pw); void f2(Widget const * pw); 迭代器的作用就像个T* 指针。声明迭代器为co...原创 2018-06-07 16:57:08 · 175 阅读 · 0 评论 -
条款04: 确定对象被使用前已先被初始化
最佳处理方法:永远在使用对象之前先将它初始化.int x = 0; const char* text = "A C-style string"; double d; std::cin >> d; 对于构造函数:确保每一个构造函数都将对象的每一个成员初始化。//区分赋值和初始化 例如以下构造函数:AB::AB(const std::string& name, con...原创 2018-06-07 16:59:55 · 377 阅读 · 0 评论 -
Effective C++ (一) : 让自己习惯C++
让自己习惯C++ 条款01:视C++为一个语言联邦 C++的主要的四个次语言: -C。C++仍是以C为基础:区块(blocks),语句(statements),预处理器(preprocessor),内置数据类型(built-in data types),数组(array),指针(pointers) -Object-Oriented C++。这部分是C with Classes所述求的:cl...原创 2018-04-23 22:43:50 · 273 阅读 · 0 评论 -
Effective C++ (二) : 构造/析构/赋值运算
构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 写一个空类,当自己没声明,编译器会声明一个default构造函数,声明一个copy构造函数,一个copy assignment操作符和一个析构函数。所有这些函数都是public且inline。 class Empty { }; //等价于 class Empty { public: Em...原创 2018-04-24 22:48:37 · 365 阅读 · 0 评论 -
Effective C++ (三) : 资源管理
资源管理 所谓资源就是:一旦用了它,就必须归还给系统。C++中最常使用的资源就是动态分配内存(若分配内存不归还,就会造成内存泄漏)。其它常见的资源包括文件描述器(fd)、互斥锁、数据库连接、网络sockets。 条款13:以对象管理资源 例:投资类型 class Investment {...}; //投资类型继承体系中的root class factory函数供应特...原创 2018-04-25 23:46:11 · 287 阅读 · 0 评论 -
Effective C++ (四) : 设计与声明
设计与声明 条款18:让接口容易被正确使用,不易被误用 假设为一个用来表现日期的class设计构造函数: class Date { public: Date(int month,int day,int year); ... }; Date d(30,3,1995); //错误,应该是"3,30"而不是"30,3" Date d(2,3...原创 2018-04-26 22:42:21 · 273 阅读 · 0 评论