C++ 学习笔记
C++ 关键字 — virtual
简介
- 来说一下
c++
中virtual
关键字的作用
class 中的 虚函数
demo1
1 |
|
- Player 继承了 Entity,但是运行结果如下:
1
2Entity
Entity
demo2
增加关键字
virtual
&override
virtual
写在 base class 的需要被重写的函数前面override
写在 sub class 的重写函数后面1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Entity{
public:
virtual void name()
{
std::cout << "Entity" << std::endl;
}
};
class Player : public Entity{
private:
std::string p_name;
public:
Player(const std::string& name){
p_name = name;
}
void name() override
{
std::cout << p_name << std::endl;
}
};
void PrintName(Entity* e){
e->name();
}
// 程序的主函数
int main( )
{
Entity* e1 = new Entity();
PrintName(e1);
Player* p = new Player("qinhan");
PrintName(p);
return 0;
}运行结果如下:
1
2Entity
qinhan
纯虚函数
- base class 中定义纯虚函数,但是没有任何实现,强制 sub class 去实现
接口
的定义就是只包含 纯虚函数,让 sub class 去实现所有的接口接口
类没有实例- 这儿的接口和
golang
中的接口很类似了
demo
1 |
|