函数在class里面定义(侯老师的说法)
好处:快,好
注意:如果函数过于复杂,即使加了inline,编译器也无法把它识别为inline函数
一般情况,数据和一些内部使用的函数都被定义为private,而想让外界调用的函数则被定义为public
由上述结果可以,想要访问私有变量,只能通过调用公有的方法来实现
单例模式:指一个类只允许有一个实例
设计的思路就是把类的构造函数声明为private,然后提供一个公共的接口使外部能够访问到类的实例,如上图
class中的函数分为两种:
会改变数据 内容
不会改变数据内容(在函数后面加上const)
注意:右下角图片,当在class前面加const时,如果类中的函数后面没有const会出错
传引用(四个字节)就相当于传指针那么快,在参数传递的过程中尽可能都是传引用;
传引用的时候如果不希望被改变,可以加上const使不可改变;
当某一些变量字节很小的时候可以考虑传value;
返回值的传递也尽量传引用
友元函数可以直接拿private中的数据,友元函数相当于打开了封装的大门
<code>如果两个复数类型的相加是在**临时变量**中进行的,执行完会被销毁</code>,<code>这种情况不能使用传引用的操作;</code>
而上图中的加法操作是在第一个参数的地址空间中进行的,可以使用传参数(<code>注意是这种情况可以传引用</code>)
注意:
这里是类外成员函数,需要在函数前面加上类名complex
成员函数分为类内和类外,并且需要注意一下和inline函数的区别
这里就是前面提到的不能传引用的情况,这里的两数相加会创建临时对象,离开这个函数就会死亡,所以不能把reference传出去,一传出去,当临时对象死亡时,外界就无法用到这个引用了,所以图片的中蓝色部分一定要return by value。
临时对象:**typename()**就是上面的三个return的后面部分
右图中的黄色部分执行到下一行就会不见了,销毁
上面的“+”这块应该采用return by reference更好
注:传参或者传返回值采用reference速度更快
上图中“<<”这种特殊的操作符只能写成非成员函数(也就是全局的这种写法)这种形式