C++学习之 virtual 关键字

观看一个例子:

 
  1. #include <iostream>
  2. using namespace std;
  3. class A{
  4.     public:
  5.         virtual void say() {
  6.             cout<<"A say: "<<endl;
  7.         }
  8. };
  9. class B :public A{
  10.     public:
  11.         void say() {
  12.             cout<<"B say: "<<endl;
  13.         }
  14. };
  15. void testVirtual(A& a) {
  16.     a.say();
  17. }
  18. int main(void) {
  19.     B b;
  20.     //b.say("hello B");
  21.     testVirtual(b);
  22.     return 0;
  23. }

1. 注意 第6行的virtual关键字和第18行的引用传参
2. 现在的结果是 "B say:";
3. 如果去掉virtual关键字,或者传参的时候不使用引用传参,则,输出的结果都将是: "A say:"
4. 这种语法现象叫 upcast
5. c++ 中class声明类,要以分号结束
6. 参考资料: 《C++编程思想》之 第15章 多态性和虚函数

加入对话

1条评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据