第一周
1 C++编程简介
c语言是procedural language,变量(variables)、类型(types)、作用于(scope)、循环(loops)、流程控制。
C++历史:B语言(1969)、C语言(1972)、C++语言(1983)。早起叫C withClass,后来更名为C++。
C++版本演化:C++98(1.0)、C++03(TR1)、C++11(2.0)、C++14。现在大部分都在使用98版本。
C++学习的内容主要包括:C++语言及其标准库。
2 头文件与类的声明
C++把数据和处理数据的函数打包在一起(就是Class),有保护数据安全等好处。
C语言直接操作数据,C++操作对象。
Class的两个经典分类:有指针成员和无指针成员,withand without pointer member(s)。
在C++中包含C的头文件可以#include <cstdio>
使用模板构建Class:
Class在创建时需要指定数据类型,有点像是在传递数据类型。
3 构造函数
成员函数可以在类声明中直接定义,在complex的public成员中,带分号“;”的,表示这只是个声明。
const放在函数后面表示不改变类内成员。
成员函数在Class本体中直接定义,会成为一个inline候选,最后是否能成为inline将有编译器决定。
数据常常被定义为private部分;希望被外界调用的函数放在public里。
构造函数:创建对象时会自动执行,无返回值类型,不需要有。
complex c1(1, 2); //创建时赋初值
complex c2; //无初值,初始化为0
complex *p = new complex(4); //
其他函数也可以像构造函数一样,可以设置默认值,但是初值列只有构造函数有次特性:
一定要使用初值列的方式,提高程序效率,培养大气的编程风格。
不带指针的Class大多不用写析构函数。
构造函数可以有很多个overloading,重载。
4 参数传递与返回值
如果构造函数放在了private区,外界需要时,通过类的public成员函数获得类。
const放在函数后面表示不改变类内数据。
函数参数的传递是传递value还是reference,尽量多使用引用。以及尽可能的使用const。
函数的返回值也尽量用引用传递。
friend(友元函数)可以做到直接拿private成员:
直接写r.re,而不是r.real()。
friend打破了Class的封装。
相同class的各个objects互为friend:
无需加friend也可以操作private成员。
数据放在private里;
尽可能用reference传递参数;
返回值尽可能用reference;
尽量加const;
多用初值列方法初始化成员;
5 操作符重载与临时对象
操作符也是一种函数,可实现重新定义。
在doapl中,return了一个complex *ths,返回值是complex &引用。
使用引用的话方便使用者,
6 复习Complex类的实现过程
complex中的运算符重载“+”等操作,不放在类内设计。