头文件与类的声明
1.类的一种分类:带指针与不带指针的
2.<>包编译环境已有的头文件
3.“”包自己写的头文件
4.防卫式声明:
#ifndef_COPLEX_
#define_COPLEX_
…
#endif
防止第二次include重复操作
5.头文件布局
前置声明
类声明
类定义
6.模板,类少量改动时,使用模板减少重复代码
Template
//T是类里要替换的部分
构造函数
1.inline在本体内定义。函数“比较快”
2.inline只是一个对编译器的建议,实际执行不一定
3.private不能在外部被访问,public可以
4.受过专业训练的构造函数写法:(带初值列)
Complex(double r
= 0, double I = 0):re(r), im(i){}//=后的0为默认参数
如果在{}里写“初值”,相当于放弃了初始化的阶段
5.多数不带指针的类不用写析构函数
6.构造函数的重载(overloading)编译之后同名函数将不同名;重载函数不能有歧义
7.(问题)创建对象时,在后面带括号和不带括号有什么区别?
查阅结果:new关键字创建对象时对于内置类型:加括号会初始化,不加括号不初始化;对于自定义类型,都会调用默认构造函数,加不加括号没区别。
来源:http://blog.csdn.net/spaceyqy/article/details/22730939
参数传递与返回值
1.构造函数能放在private区Singleton
2.const complex&常引用,地址传参,不改变原值
3.不改变值的成员函数,()后加上const,这样如果之后定义了一个const的对象,再使用这个函数不会报错
4.函数返回类型后加&返回引用
5.friend自由取得friend的private成员
6.相同class的各object互为友元
7.不能返回函数内部局部变量的引用
操作符重载与临时对象
1.Typename()也是强制类型转换,临时对象,这类返回不能用引用,生命周期到下一行就结束。
2.Cout是ostream的一个对象
3.调用成员函数的对象,在函数里会有一个this指针指向它
4.操作符重载最好返回引用,因为用户有可能用操作符连用
5.函数里产生了局部对象(local object),返回时不可以返回引用
6.<<操作符在重载时,考虑连用的话应该返回ostream&