1,c++早期叫c with class(1983),到98年有了第一个标准
2, c++ 包括语言和标准库
3,c++ STL源码解析
4,面向对象:数据和处理数据的函数包装在一起,形成一个对象处理自己的数据。
5,复数,不含指针(单一的类)
6,字符串含有指针
7,class.h class.cpp xxx.h(标准库)
8, 类的初始化可以加入默认值
Complex(double x=0,double y=0):real(x),image(y){}
9, 构造函数的重载,冲突
Complex():re(0),im(0){}
Complex(double x=0,double y=0):re(x),image(y){}
10,构造函数放到private中 singleton
11, 函数的后面的const(只看不改,只用不改,就是不改变数据内容)
12, 不允许常量对象调用可能改变数据的内容的函数方法(const using const functions)
13,pass by value(copy) & pass by reference(to const)后者相当于传指针,快,推荐(但是实际上至少要传递四个字节)
不希望修改就变为const reference,该加入const的地方要加入
14, return by reference(to const) 尽量这样做
15,friend 直接调用我的数据,快,但是打破了封装的要求
16,相同class的各个objects互为友元
Complex & Complex::operator+=(const Complex &temp)
{//就好比这里的temp
re += temp.re;
im += temp.im;
return *this;
}
17,传出去的数据到底要不要修改?
比如c1+c2,结果可以放到c1上返回reference,也可以建立一个local变量,返回value
18,this默认指向调用者。传递者无需知道接受者使用什么方式来接受。
c3+=c2+=c1;多次传递赋值计算,建议传递引用
19,非成员函数(无this),全局的函数
20, 为什么返回临时对象(不需要名字的临时创建)?
如果函数撤销之后就消失,那当然不能够传出引用,return typename(1,8);
21,操作符重载作用在左边的变量上
22,过程:
防卫式的说明--构建类名--具体数据成员--具体函数