Boolan C++面向对象高级编程学习第一周

  作为一个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++学习第一周总结出来的一点小细节,如果有任何错误理解或者补充,请大家进行指正。

 

posted @ 2017-10-22 18:54  萌斗士  阅读(173)  评论(0编辑  收藏  举报