c++无法实例化抽象类
时间: 2023-10-16 12:06:02 浏览: 153
无法实例化抽象类
在C++中,抽象类是指包含纯虚函数的类,它不能被实例化。纯虚函数是通过在函数声明中使用"=0"来标识的,它表示该函数在基类中没有实现,而是留给派生类去实现。因为抽象类中存在未实现的纯虚函数,所以无法创建抽象类的实例。
引用中的示例代码展示了一个抽象类Base和它的派生类Test。在这个例子中,Base类中的fun函数被声明为纯虚函数,因此Base类是一个抽象类。而在main函数中,试图实例化抽象类Base的对象a是错误的,因为抽象类不能被实例化。同样,将基类Base的地址赋给派生类Test的指针p也是错误的。
要修正这个问题,可以将a声明为Base类的指针,而不是Base类的对象。即将void main(){ Base a; Test *p; p=&a; }改为void main(){ Base *a; Test p; a=&p; }。这样,a指针可以指向派生类Test的对象,而不再试图实例化抽象类Base的对象。
引用提供了关于GDB调试工具的信息,与问题本身无直接关联,不需要在回答中引用。<span class="em">1</span><span class="em">2</span>
#### 引用[.reference_title]
- *1* [C++ 不能实例化抽象类](https://blog.csdn.net/tracyliang223/article/details/17782539)[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%"]
- *2* [Linux GDB C/C++调试基础与提升](https://download.csdn.net/download/keavinn/88217480)[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 ]
阅读全文