C++虚函数,纯虚函数使用
时间: 2023-09-07 13:16:33 浏览: 127
c++虚函数的使用
C++中的虚函数是为了实现动态联编,允许在程序的运行阶段动态地选择合适的成员函数。在基类中声明虚函数,派生类可以对虚函数进行重新定义。重新定义的函数应该具有相同的形参个数和形参类型,以实现统一的接口。如果派生类中没有重新定义虚函数,则继承基类的虚函数。
纯虚函数是在基类中不能对虚函数给出有意义的实现时,将其声明为纯虚函数,并留给派生类去实现。纯虚函数的声明格式为:virtual <类型> <函数名>(<参数表>) = 0。纯虚函数没有函数体,派生类必须实现纯虚函数。
为了确保每个子类的虚函数都被实现,可以在父类中声明一个含参数的纯虚函数。如果忘记在派生类中实现纯虚函数,编译器会发出警告。例如:
```cpp
class Person {
public:
virtual void sayLocation(const string& location) = 0;
};
class Student : public Person {
public:
void sayLocation(const string& location) {
cout << "I am a student in " << location << endl;
}
};
class Teacher : public Person {
public:
void sayLocation(const string& location) {
cout << "I am a teacher in " << location << endl;
}
};
```
在这个例子中,Person类中声明了一个纯虚函数`sayLocation`,派生类Student和Teacher必须实现这个函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】](https://blog.csdn.net/qq_69683957/article/details/126397761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [C++虚函数与纯虚函数使用详解](https://blog.csdn.net/weixin_42108411/article/details/108013807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文