2021/01/16 C++程序设计学习 16-20课时

课时16——子类父类关系

继承的类的构造函数的调用只能放在initialize list 里面,通过initialize list来传递参数给父类构造函数中的参数。

构造顺序是:1、父类构造;2、子类构造;
析构顺序反过来。

子类未定义函数,则使用父类函数;若子类定义函数与父类重名或冲突,则使用子类的函数;若父类函数有带参合未带参两种(该函数及该函数的重载),子类函数只有一种未带参的,那么使用子类带参函数则会出现error;因为子类带参函数没有定义。

如果此时还想继续使用父类重载带参函数,则使用b.A::print(100)即 对象.类::函数(带参)。

课时17——函数重载和默认参数

Overload是重载,是有相同的方法名,但参数类型或个数彼此不同。

1.同名不同参的函数构成重载
2.同名同参同类型的子类函数与父类函数构成重写
3.默认参数只能在函数声明时给出,且只能从后往前给

Override是重写,是在子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。

课时18——内联函数

1.函数前加inline就成了声明,放.h里面即可
2.inline函数编译时会直接在被调用的地方展开
3.inline函数比宏要安全,因为有类型检查
4.过长的inline函数会被编译器拒绝
5.声明时就给出函数body的成员函数均为inline

课时19——const

在定义一个字符串"hello"的时候,也有两种方式

1.如果你希望你可以去在后面的程序修改这个字符串的内容,就写成

char s[ ]="hello";  //数组的形式

数组的写法是将代码段里面的常量数组赋值到变量储存内存空间里.!!!

2.如果不希望它被修改,就写成指针的形式

char* s="hello"; //指针的形式

后者其实是定义成了一个const char* s;
就算你后续拿s去做别的用途,也不能通过它去修改值.切记!!!

正确的写法是:

const char *s ="hello";  

编译就会去检测,能够避免你去尝试修改代码段里面的内容.

课时20——不可修改的对象

1.可以设置函数为const,如:

void f() const
{
}

表示在这个函数中this为const,即次函数不修改任何成员变量的值,这种使用方式需要在原型和定义时都加上const。

若类中的一个成员变量定义为const,也必须要进行初始化。

2.若将一个类的对象定义为const,则必须要有构造函数初始化其中的成员变量,因为成员变量不能被改变,必须初始化一个初值。

3.两个成员函数若一个定义为const,另一个定义为正常(非const),则两个函数可以构成重载。两个函数构成重载的必要条件是两个函数的参数表不同,这两个函数的参数表实际是不同的,因为他们一个的参数是“const 类名* this”,另一个的参数是“类名* this”。

4.若一个类的对象定义为const,如:const A a;则在调用成员函数时必须使用const格式的成员函数,若没有const格式的成员函数,则报错,编译不通过。

5.Tips:
a)类定义的后面一定要加“;”
b)构造函数和析构函数没有返回类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值