天天看点

C++知识点归纳(二)

函数在class里面定义(侯老师的说法)

好处:快,好

注意:如果函数过于复杂,即使加了inline,编译器也无法把它识别为inline函数

一般情况,数据和一些内部使用的函数都被定义为private,而想让外界调用的函数则被定义为public

由上述结果可以,想要访问私有变量,只能通过调用公有的方法来实现

C++知识点归纳(二)
C++知识点归纳(二)
C++知识点归纳(二)

单例模式:指一个类只允许有一个实例

设计的思路就是把类的构造函数声明为private,然后提供一个公共的接口使外部能够访问到类的实例,如上图

C++知识点归纳(二)

class中的函数分为两种:

会改变数据 内容

不会改变数据内容(在函数后面加上const)

注意:右下角图片,当在class前面加const时,如果类中的函数后面没有const会出错

C++知识点归纳(二)

传引用(四个字节)就相当于传指针那么快,在参数传递的过程中尽可能都是传引用;

传引用的时候如果不希望被改变,可以加上const使不可改变;

当某一些变量字节很小的时候可以考虑传value;

C++知识点归纳(二)

返回值的传递也尽量传引用

C++知识点归纳(二)

友元函数可以直接拿private中的数据,友元函数相当于打开了封装的大门

C++知识点归纳(二)
C++知识点归纳(二)

​<code>​如果两个复数类型的相加是在**临时变量**中进行的,执行完会被销毁​</code>​,​<code>​这种情况不能使用传引用的操作;​</code>​

而上图中的加法操作是在第一个参数的地址空间中进行的,可以使用传参数(​<code>​注意是这种情况可以传引用​</code>​)

C++知识点归纳(二)

注意:

这里是类外成员函数,需要在函数前面加上类名complex

成员函数分为类内和类外,并且需要注意一下和inline函数的区别

C++知识点归纳(二)
C++知识点归纳(二)
C++知识点归纳(二)

这里就是前面提到的不能传引用的情况,这里的两数相加会创建临时对象,离开这个函数就会死亡,所以不能把reference传出去,一传出去,当临时对象死亡时,外界就无法用到这个引用了,所以图片的中蓝色部分一定要return by value。

临时对象:**typename()**就是上面的三个return的后面部分

右图中的黄色部分执行到下一行就会不见了,销毁

C++知识点归纳(二)

上面的“+”这块应该采用return by reference更好

注:传参或者传返回值采用reference速度更快

C++知识点归纳(二)

上图中“&lt;&lt;”这种特殊的操作符只能写成非成员函数(也就是全局的这种写法)这种形式

继续阅读