using namespace std;
class CPeople
{
public:
double height;
int age;
char sex;
public:
CPeople(){age = 100;}
~CPeople(){}
void print()
{
cout << "age=" << this->age << endl;
}
};
int main()
{
CPeople *people = nullptr;
people->print();
return 0;
}
```
这次再执行就会报段错误了,为什么呢,因为成员函数是公用的,但是成员变量却是每个对象独有的,没有为people分配空间,就是没给成员变量分配空间,且此时people为空指针,那给成员函数传入的隐形this指针也是空指针,它怎么可能访问到某个成员变量呢。
#### 25. 什么是纯虚函数?什么是抽象类?
看一下这段代码:
```cpp
class CPeople
{
public:
CPeople(){}
~CPeople(){}
virtual void print() = 0;
};
```
这段代码里面print就是纯虚函数,所谓纯虚函数其实就是虚函数后面加` = 0`,此时print函数是不需要实现的,它只是定义了一个抽象接口而已。
同样的,这段代码里面的CPeople就是抽象类了,某个类不论是自己定义了纯虚函数,还是从其他基类继承了纯虚函数但却并没有实现的,都可以称为抽象类,所谓抽象,其实就是具体的反义词,比方说这里只给了一个接口,但是接口到底是怎么实现的,不知道,这就叫做抽象了。
***好了,本篇文章就为大家介绍到这里,觉得内容对你有用的话,记得顺手点个赞哦~***
![春风版二维码小号.png](https://s2.51cto.com/images/20210618/1624016657940623.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)c++类和继承面试点25连问
原文:https://blog.51cto.com/e21105834/2926616