the evoltion of c++

为啥自己去读这本书?

  • 每每看到C++ 的特征,联想到C,我常常会踹多这门语言加入这个特征的原因,所以这本书给了我很多新的启发
  • 跟着大师的脚步,看语言的本质,其实语言就那么回事~
  • 我在学编译原理这门课,一门语言的诞生和发展,和编译器息息相关,这对我理解编译原理大有裨益
  • how to use C++ effectively~

C++ 虚函数

  • 每个类里有一个指针,指向虚函数表(表里的每项记录着,每个函数的入口地址,如果,派生类重写了基类的虚函数,那么,派生类的虚函数表,只会记录重写的函数的地址,没有被重写的函数,就记录基类的虚函数的地址)

override

  • 隐式转换对运算符重载的意义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class complex
{
double re,in;
public :
complex(double);
...
friend complex operator+(complex ,complex);
...
}
void g(complex z1,complex z2,double d)
{
complex z3 = z1+z2;
complex z4 = z1 + d;
complex z5 =- d + z1;
}

由于隐式转换的存在,运算符的混合运算的支持,就会方便很多
如果没有隐式转换的存在,假设定义四个基本算术运算,定义double 和 complex的完整运算集,要写12 个算术函数,但采用隐式转换只要4 + 1

  • explict 抑制隐式转换
  • 成员 or 友元
    - 运算符 = 必须是 成员
    - 最好把+= ,*= 一类的赋值运算符
    

continue ….