每日一练Day-8

简介: 每日一练Day-8

选择:

知识点:赋值兼容规则指的是什么:3条

知识点:A的确是继承了B的成员(成员函数,成员变量),但是A访问这些成员仍然要遵守这些成员在B类的访问规则,例如:A继承了i,但是i仍然是private的,因此不能在类外类中访问。

知识点:

1.什么是纯虚函数,形如:

类中有纯虚函数的类称为抽象类,抽象类是不能被实例化的。

继承了纯虚函数的类也不能实例化,除非他重写了纯虚函数,纯虚函数的作用就是迫使派生类必须重写虚函数

2.什么是虚基类,发生在菱形继承中,如下的A被称为虚基类

抽象类中的纯虚函数可以有内容,但仍然不能实例化

知识点:在多态中析构函数为什么要写成虚函数,以及析构函数实现多态后是如何运作的

场景:

父类指针指向了一个new出来的子类

那么调用delete p1 ,我们期望结果是:分别调用子类和父类的析构函数。

BUT

只调用了父类析构,why?因为我p1是person*类型,指向的是student中的person,所以它会调用student中person的析构函数

但是student已经new出来了一个对象了啊,且student里也已new了资源,不调student的析构函数就会造成内存泄漏。

所以要把析构函数写成虚函数的形式,实现目的。如何实现的?我们已经重写了析构函数,并把它设置为虚函数,此时p1指向的是student中的person,person里有一张虚表,虚表里存放了重写后的析构函数的地址,p1会调用这个析构函数。调用完studentd析构函数后,再去调用person的析构函数,再调用free释放指针指向的堆空间,达到目的

知识点:

C语言的结构体没有成员函数

知识点:

什么是单例模式 一个类只能创建一个对象

知识点:

1.析构函数中不能调用delete,因为delete会调用析构函数,会引发无限循环

2.this指针的类型是 *const 即不能被修改

A(A&)=delete这是什么?

类中禁止生成A(A&)这个拷贝构造函数,既然显示的写了,也无法被调用,因为它是被删除的函数

day14

相关文章
|
4月前
|
算法
|
4月前
|
Linux Windows
|
4月前
|
编译器
|
存储 算法 C++
C/C++每日一练(20230222)
C/C++每日一练(20230222)
75 1
|
算法 Java 编译器
C/C++每日一练(20230421)
C/C++每日一练(20230421)
76 0
|
C++
C/C++每日一练(20230422)
C/C++每日一练(20230422)
51 0
|
C++
C/C++每日一练(20230426)
C/C++每日一练(20230426)
56 0
|
C++ 索引
C/C++每日一练(20230418)
C/C++每日一练(20230418)
62 0
|
C++
C/C++每日一练(20230411)
C/C++每日一练(20230411)
63 0