分类: C/C++
2016-02-23 21:50:41
c++文件的后缀(.h,.cpp.cc等,根据编译器不同而不同)
1.include的方式,include
2.header文件的格式规范
①防卫式声明
#ifndef _COMPLEX_H_
#define _COMPLEX_H_
#endif
②从上到下有3个部分组成
a.声明
b.类定义
c.类的成员函数定义
3.如何编写类?
①构造函数
重点:
a.构造函数重载(注意默认参数的问题!!!)
b.class initilization list要用上
②template模板
template
complex
③inline关键字(只是告诉编译器尽量inline)
④access level
public 全局访问
private 只有friend对象和public函数可以访问
friend friend可以使用对象的private数据,相同class的各个objects间互为friend。
⑤构造函数放在private的使用:单例singleton
⑥函数返回考虑考虑是否加const,如double real() const { return re;}
当使用者定义const对象的时候,如果double函数没有const,会报错
⑦参数传递要考虑是否是reference
4.操作符重载
①成员函数(this),如:+=
所有成员函数都会带着隐藏的对象this,+=作用在左边,因此作用在左操作数,因此左操作数为this
函数声明是的返回值是complex&,但return *this,这种写法是正确的。
传递者无需知道接受者是否以reference形式接收。即C++语言中间做了转换,即return值,但是接收return返回值的接收者根据自己需要接收,接收可以是reference或者是object。
就是说传递者只要传value,那么接受者可以根据需要进行接收,可以是value或者是reference,当然一般而已reference的时候拷贝更快(char除外)。
②非成员函数,如:+ -
c2=c1+c2,应该设计为非成员函数。
inline complex operator + (const complex& x, const complex& y)
+返回的是一个complex对象.
为什么不能返回的是reference,因为相加后必定有一个新的object,但这个object在函数作用域里面,是个局部变量(local object)。
局部变量不能在外面访问,在退出函数后的该变量的地址也是无效的,因此不能返回reference。
如果变量是在外面也可以访问,此时可以返回reference,如成员函数部分的例子!
重点1:操作符的连串使用,是返回为complex reference的原因!!
c3+=c2+=c1,那么+=操作后必须要返回complex类型的reference!!!
<<符号的重载,返回值必须为ostream&
ostream& operator << (ostream& os, const complex& x)
其中os参数变量不能加const,因为每一次<<都会修改os的状态!!
重点2:temp object 临时对象 typename();