c++复习笔记(3)

这篇是各种琐碎的东西。

类的函数如果在类内部直接实现,则成为内联函数候选。类外部实现的方法,可以用inline声明,使其称为内联函数候选。但是函数是否可以成为内联函数,需要看编译器的行为。、

构造函数可以使用初始列:

functionName (varList) : var1(value1), var2(value2) {}

构造函数可以放在private区(单例)。

类的成员函数可以分为改变类的值的和不改变类的值的。不改变类的值的函数可以加const:

returnType functionName (varList) const {}

这里注意,这么写的原因,有一个是:当我们声明了一个const的实例,然后调用不是const的方法就会出错。所以对不改变值的函数,加上const,就可以被const实例正常调用。

函数的参数传递和返回值,首先考虑引用。若参数不需要变化时,要传const引用。

标记friend的方法可以访问class的private部分,注意友元函数并不是类的一部分,仅仅是需要在类中进行声明。相同class的objects互为friends。

对于返回值,如果返回的是传入的指针或引用,则可以返回引用。如果返回的是函数内新建的变量,就不能返回引用(因为函数结束之后,新建的变量的生命周期就结束了,此时返回引用就会发生错误)。

所有的成员函数都默认有一个参数this,表示指向类的实例的指针。

操作符重载,一元操作符需要传一个参数,二元操作符需要传两个参数。如果重载函数是类的成员函数,那么默认多一个this。

操作符重载中,要注意返回值的类型,主要是考虑操作符连续使用时的情形(比如a+=b+=c)。

操作符重载,对于自己无法操作的类,只能写成非成员函数。

带指针的成员参数的类要自己实现拷贝的构造函数和拷贝赋值函数,因为默认的构造函数只能做对应复制,这样对于指针来说会复制地址而不是值,拷贝赋值函数同理。同时在析构函数里要记得delete。

猜你喜欢

转载自www.cnblogs.com/wangzhao765/p/9130565.html
今日推荐