美文网首页
C++面向对象高级编程 第一周 博览网

C++面向对象高级编程 第一周 博览网

作者: 我要飞翔_2520 | 来源:发表于2017-04-16 09:38 被阅读0次

    1.头文件中的防御式声明。例如编写complex.h  应该

    在开头写        #ifndef __COMPLEX__        #define __COMPLEX__    结尾    #endif

    2.如果class中数据类型可能不同 ,则直接使用模板。具体做法在class定义前使用template,在class的body内使用T来代替类型明。

    3.有些短小的函数可以在class中的body内直接定义。在body体内定义的函数默认编译成inline函数。具体是够编译成inline函数由编译器决定。

    4.使用构造函数尽量使用初始化列表进行赋值,此种方式为构造函数独有。其他函数不可使用。

    5.singleton模式下将构造函数放到private中。

    6.不使用指针的class一般不需要重写析构函数。

    7.不需要改变class的成员变量的内容函数应写为常量成员函数,例double real()const {};因为常量无法调用非常量成员函数。所以如果不加const则可能出现常量无法调用函数的现象。

    8.函数的参数传递中尽量不使用值传递,使用引用传递,如果传递过去不希望更改参数则加const进行修饰。

    9.如果可以的话函数的返回值也尽量使用引用,这样可以提高程序效率。(当返回的值是一个函数local变量时,则不可以返回引用,因为它会随着函数的结束而消失,比如对+号进行重载时,+为全局函数,起返回结果为一个临时变量,故其返回值不能用引用;而对+=进行重载时,其运算结果要储存进入左值中,故必须返回引用)

    10.友元函数破坏了class的封装性,但是却可以提高程序的效率(友元函数可以直接调用class内的私有成员变量而不用通过访问函数进行访问从而提高执行效率)。相同class的各个object互为friend(友元函数)

    11.对于<<  >>操作符函数的重载必须写为全局函数,而不能写成成员函数。为了保证cout<<i<<y<<endl;为了保证这样的使用方式,故其返回值必须为引用,即ostream &,因为保证速度,返回不能为void,因为cout<<i运算后还要进行下一个运算,故返回值必须为ostream类。

    相关文章

      网友评论

          本文标题:C++面向对象高级编程 第一周 博览网

          本文链接:https://www.haomeiwen.com/subject/fyhgattx.html