作为一个c++小白,在Boolan报班学习c++一周,感觉收获颇为丰富
第一周,老师讲的不多,主要是围绕着complex这个复数类进行深入的讲解,从这个复数类层层剖析,详细的讲解了这复数类具体的实现,但是让我收获最大的是以下几点:
1、c++作为一门高效的语言,我们应该在各个细节将高效性发挥到极致
(1)构造函数的初始化方法 (具有初值列)
A(int a, int b): re(a), im(b)
{}
让构造函数具有初始化得能力,减少赋值得开销时间
(2)inline 得使用,
在类的成员函数实现很简单的时候,使用inline,会省去调用的部分,但是如果函数很复杂的时候,使用inline,复制函数的过程反而会增加开销,
但是我们的编译器会自动进行判断。
(3)reference(引用)的使用
在作为入参的传递上,使用引用相当于是值得传递,省去了重新分配内存的开销,这个在参数不改变的情况下,经常和const一起使用
在作为函数返回值传递的时候,如果返回值是入参,可以使用,如果是函数里面申请的内存,在返回后会被释放掉,不能使用
(4)typename()使用
typename() 是创建一个临时的对象(temp object),下一行马上就释放掉,比重新创建对象要节约开销
如int(1), complex(1,2)等
2、C++作为一门严谨的语言,我们有很多小地方需要注意
(1)头文件的重定义
#ifndef _COMPLEX_
#define _COMPLEX_
#endif
我们在头文件应该加上这要的定义,可以防止头文件的重定义
(2)const的使用
在入参不需要被改变的时候,我们尽量都加上const
在我们需要类成员函数不改变类的成员时,我们可以在成员函数末尾加上const
(3)有些操作符重载不能在类里面重载,只能全局重载
如:<<这个操作符,因为如果在类里面重载,类的隐藏的this指针具有可变性,可作为第一参数或者第二参数,但是这个操作符的第一参数已经固定为ostream类型,
我们不想让ostream类型作为第二参数,所以只能作为全局函数进行重载
(4)如果重载的操作符是返回void的类型,它将不能连续使用
如重载+=操作符,如果返回void类型,
a+=b;这个是OK
a+=b+=c; 这个是false的
作为一个C++小白,Boolan C++学习第一周总结出来的一点小细节,如果有任何错误理解或者补充,请大家进行指正。