培养正规的、大气的编程习惯

头文件声明

侯捷C++面向对象高级编程(上)笔记

如果没有定义就定义一个complex。如果定义过了就不再进入头文件的定义,防止多次引用一个头文件这正是我们想要的。

模版T

侯捷C++面向对象高级编程(上)笔记
通过模版T来指定类型
侯捷C++面向对象高级编程(上)笔记

inline函数

类里面定义的函数就是inline函数
不在本体中定义的可以加一个inline
侯捷C++面向对象高级编程(上)笔记

访问级别

所有的数据都应该放在private,有些函数只打算函数内使用设为private
侯捷C++面向对象高级编程(上)笔记

构造函数

创建一个对象,创建一个东西
函数名称和类名相同
可以有默认值
构造函数其实就是代表创建这种东西(就是这个类)所以没有必要有返回类型
侯捷C++面向对象高级编程(上)笔记
利用初始列初始化,
re =r
im = i
为什么要在这里初始化呢?
与在函数里面初始化的区别是:
第一阶段是初始化初值列
第二阶段是大括号里面的赋值

如果在第二阶段大括号里面赋值放弃了第一阶段的初始化,效率变差

不带指针的类多半不需要析构函数

多种构造函数(重载)

侯捷C++面向对象高级编程(上)笔记
侯捷C++面向对象高级编程(上)笔记

构造函数放在private里面

侯捷C++面向对象高级编程(上)笔记
private不被外界调用,下面的调用会报错
那放在private有什么用呢?
设计模式中有一个Singleton,就把构造函数放在private里面
侯捷C++面向对象高级编程(上)笔记
Singleton意思为为单体
里面自己准备了自己
侯捷C++面向对象高级编程(上)笔记
只有通过这个函数才能获取自己
告诉我们确实有这种写法把构造函数放在private里面。

常量成员函数

对class里面有不改变数据和改变数据的,
只是拿出来,
侯捷C++面向对象高级编程(上)笔记
前面加上const,表示我这个对象是不可以改的
我们在底下应用的时候不加const不会报错,但是我们要写出大气的代码,要考虑周全
侯捷C++面向对象高级编程(上)笔记
如果没有const就会报错
侯捷C++面向对象高级编程(上)笔记

参数传递by value 或by 引用

侯捷C++面向对象高级编程(上)笔记
by value就是整包都传过去,value多大就放过去 (栈)
尽量传引用,过去C中都是指针(4字节很快)
**C++我有一个指针但更漂亮–引用 **

尽量所有的参数传递都传引用
如果是字符呢? 1个字节 但是大范围都是引用
如果不希望对方改 加cosnt。

返回值by 引用

侯捷C++面向对象高级编程(上)笔记
尽量返回值为引用,后面再谈。

友元

侯捷C++面向对象高级编程(上)笔记
这个函数可以直接拿private里面的内容,因为是friend。

朋友直接拿数据会快一点相比函数

朋友可以打破封装

同一个class中的各个对象互为友元

看似打破了封装,其实是成立的。
侯捷C++面向对象高级编程(上)笔记

小结:

  • 数据一定放在private里面

  • 参数尽可能以reference来传,要不要const视情况而定

  • 返回值尽量以reference来传。首先考虑我用reference可不可以

  • 在类的本体里的函数应该加const的就应该加,否则设计者想用的const的时候你没加会报错。

  • 构造函数有一个特殊的语法叫innegerlazationlist:尽量去用它。

所有的成员函数里面都有一个隐藏的参数,这里是this其实虽然他没写但是他是隐藏的

相关文章: