读书笔记-----C++ 0229
来源:互联网 发布:马士兵java视频过时吗 编辑:程序博客网 时间:2024/06/06 11:01
pass:
public继承意味着is-a,virtual函数意味着接口必须被继承,non-virtual函数意味着接口和实现都必须被继承。
public继承意味着is-a是以C++进行对象编程最重要的一个规则,假设A为基类,B为派生类,在is-a关系中,每个B都是A,反之则不成立,可以用数学中的关系表达,就是B集合属于A集合。
派生类中的名称会掩盖基类中的名称(名称遮掩规则)
有三句话很重要:纯虚函数的目的是让派生类只继承接口,虚函数(非纯虚函数)的目的是让派生类继承该函数的接口和缺省实现,非虚函数的目的是令派生类继承函数的接口及一份强制性实现。
使用公有继承时,类可以继承接口,可能继承实现(基类的纯虚函数提供接口,但不提供实现)。获得接口的是is-a关系的组成部分。而使用组合,类可以获得实现,但不能获得接口。不继承接口是has-a关系的组成部分。
除非有好的理由允许构造函数被使用于隐式类型转换,否则把它声明为explicit会更好,被声明为explicit类型的构造函数禁止编译器执行非预期的类型转换。
在传递用户自定义类型时,按引用传递比按值传递要好,传递内置类型(C-like)时和使用STL的迭代器和函数对象时,按值传递比较好。
在程序中尽量不要有带有不明确行为的代码。
在《Effective C++》一书中,将C++分为四个次语言组合成的高级语言是一个很好的划分办法,有助于对C++的理解,这四个次语言如下:
1C,包括区块、语句、预处理器、内置数据类型、数组、指针等;
2Object-Oriented C++,也就是C with classes,包括class、封装、继承、多态、虚函数等;
3Template C++,这是C++泛型编程部分,Template带来了TMP(模板元编程)这一崭新的编程范型。
4STL。
C++中尽量以const、enum、inline替换#define,因为#define不被视为语言的一部分,所以可能会引起一些难以预料的问题,以#define定义的常量可能不会被编译器看到,而const常量作为一个语言常量是肯定会被编译器看到的,用const定义常量能产生更少的码。#define不能提供任何封装性,但是const成员变量可以被封装的。
const int LEN =5;
const char *const pa = “hello”;
对于单纯常量最好用const对象或enums替换#defines。
对于形似函数的宏最好用inline函数替换#defines。
下面两种表示方法的意义相同:
viod f1(constWidget * pw);
void f2(Widgetconst *pw);
- C读书笔记
- C读书笔记
- 读书笔记-c
- C读书笔记
- Expert C Programming读书笔记
- 《C语言程序设计》读书笔记
- 谭浩强C语言 读书笔记
- 《Effective C++》读书笔记
- C-PRIMER PLUS读书笔记
- C-PRIMER PLUS读书笔记
- 《Effective C++》读书笔记
- C++Primer读书笔记(一)
- 【读书笔记】c专家编程
- C Primer Plus 读书笔记
- 《Effective c++》读书笔记
- 《C程序设计语言》读书笔记20091106
- test_irq.c 源代码 读书笔记
- C ++ 读书笔记 顺序容器
- el表达式(条件运算符)
- js只能输入数字[价格等]
- 如何轻松破解Word文档“取消文档保护”密码?
- 看黑客如何在入侵后清理日志
- uboot源代码分析及移植
- 读书笔记-----C++ 0229
- WC 2006 species
- Vc++四种思考模式
- android程序完全退出步骤
- PHP判断字符串编码并且获取字符串中的中文 + 清除空格
- bf531能否驱动1024x768的液晶屏?
- vs2010安装.netframework4.0后,出现.net Framework Initialzation Error
- WP7-常用控件简介
- onConfigurationChanged