zoukankan      html  css  js  c++  java
  • C++重载覆盖隐藏

    写一个程序,各写出重载覆盖
    1
    // 2 // main.cpp 3 // 2013-7-17作业2 4 // 5 // Created by 丁小未 on 13-7-17. 6 // Copyright (c) 2013年 dingxiaowei. All rights reserved. 7 // 8 //2.在一个程序中,各写出重载覆盖隐藏的成员函数 9 #include <iostream> 10 using namespace std; 11 12 class A 13 { 14 15 public: 16 void func() 17 { 18 cout<<"A的func()"<<endl; 19 } 20 void func1(int i) 21 { 22 cout<<"A的func1()"<<" 参数是:"<<i<<endl; 23 } 24 virtual void func2() 25 { 26 cout<<"A的func2()"<<endl; 27 } 28 virtual void func2(int i) 29 { 30 cout<<"A的func2()"<<" 参数是:"<<i<<endl; 31 } 32 }; 33 34 class B:public A 35 { 36 public: 37 void func() //基类没有virtual关键字就是表示基类被隐藏 38 { 39 cout<<"B的func()"<<endl; 40 } 41 void func2() //基类有virtual关键字就表示基类方法被覆盖 42 { 43 cout<<"B的func2()"<<endl; 44 } 45 void func2(int i) 46 { 47 cout<<"B的func2()"<<" 参数:"<<i<<endl; 48 } 49 }; 50 int main(int argc, const char * argv[]) 51 { 52 A a1; 53 A *a2=&a1; 54 B b1; 55 A *a3=&b1; 56 B *b2=&b1; 57 a1.func(); //A的func() 58 a1.func1(1); //A的func1() 1 59 a2->func1(2); //A的func1() 2 60 a2->func2(3); //A的func2() 3 61 a2->func(); //A的func() 62 a3->func(); //A的func() 63 a3->func1(4); //A的func1() 4 64 a3->func2(); //B的func2() 65 a3->func2(5); //B的func2() 5 66 b1.func(); //B的func() 67 b1.func2(); //B的func2() 68 b2->func(); //B的func() 69 b2->func2(); //B的func2() 70 b2->func1(6); //A的func1() 6 71 b2->A::func2(7); //A的func2() 7 72 return 0; 73 }


    如果基类中函数不是虚函数,子类也有这个同名同参数函数,那么基类函数被隐藏;如果基类中该函数是虚函数,那么就是覆盖,如果在同一个类中,两个 函数名字相同,参数或返回类型不同,那么就是属于函数的重载
    感谢来访,共同学习!
  • 相关阅读:
    JsonResponse
    python导出数据到excel
    ftp上传文件到服务器
    js设计模式 —— 订阅发布模式
    reducer的作用
    redux设置和使用三大原则
    js事件监听
    图片占位符
    正则练习
    正则基础
  • 原文地址:https://www.cnblogs.com/dingxiaowei/p/3197540.html
Copyright © 2011-2022 走看看