C语言中virtual关键字的三种用法具体是怎样的?

2026-04-19 01:102阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1197个文字,预计阅读时间需要5分钟。

C语言中virtual关键字的三种用法具体是怎样的?

virtual用法一:实现多态

virtual用法一

#include using namespace std; class A{ public: virtual void display(){ cout<<"A"<<ENDL; } }; class B : public A{ public: void display(){ cout<<"B"<<ENDL; } }; void doDisplay(A *p) { p->display(); delete p; } int main(int argc,char* argv[]) { doDisplay(new B()); return 0; }

这段代码打印出的结果为B,但是当把A类中的virtual去掉之后打印出的就为A。当基类中没有virtual的时候,编译器在编译的时候把p看做A类的对象,调用的自然就是A类的方法。但是加上virtual之后,将dispaly方法变成了虚方法,这样调用的时候编译器会看调用的究竟是谁的实例化对象,这样就实现了多态的效果。

阅读全文

本文共计1197个文字,预计阅读时间需要5分钟。

C语言中virtual关键字的三种用法具体是怎样的?

virtual用法一:实现多态

virtual用法一

#include using namespace std; class A{ public: virtual void display(){ cout<<"A"<<ENDL; } }; class B : public A{ public: void display(){ cout<<"B"<<ENDL; } }; void doDisplay(A *p) { p->display(); delete p; } int main(int argc,char* argv[]) { doDisplay(new B()); return 0; }

这段代码打印出的结果为B,但是当把A类中的virtual去掉之后打印出的就为A。当基类中没有virtual的时候,编译器在编译的时候把p看做A类的对象,调用的自然就是A类的方法。但是加上virtual之后,将dispaly方法变成了虚方法,这样调用的时候编译器会看调用的究竟是谁的实例化对象,这样就实现了多态的效果。

阅读全文