C++ 重载 重写(覆盖)重定义

2019-03-04  本文已影响0人  hey白启明

重载

#include <iostream>
using namespace std;

class PrData{
    public:
        void printdata(int i){
            cout<<"int"<<i<<endl;
        }
        void printdata(double i){
            cout<<"double"<<i<<endl;
        }
};
int main(){
    PrData pd;
    pd.printdata(1);
    pd.printdata(1.1);
}

重写(覆盖)

#include <iostream> 
using namespace std;
 
class Shape {
   protected:
      int width, height;
   public:
      Shape( int a=0, int b=0)
      {
         width = a;
         height = b;
      }
      virtual int area()
      {
         cout << "Parent class area :" <<endl;
         return 0;
      }
};
class Rectangle: public Shape{
   public:
      Rectangle( int a=0, int b=0):Shape(a, b) { }
      int area ()
      { 
         cout << "Rectangle class area :" <<endl;
         return (width * height); 
      }
};
class Triangle: public Shape{
   public:
      Triangle( int a=0, int b=0):Shape(a, b) { }
      int area ()
      { 
         cout << "Triangle class area :" <<endl;
         return (width * height / 2); 
      }
};
// 程序的主函数
int main( )
{
   Shape *shape;
   Rectangle rec(10,7);
   Triangle  tri(10,5);
 
   // 存储矩形的地址
   shape = &rec;
   // 调用矩形的求面积函数 area
   shape->area();
 
   // 存储三角形的地址
   shape = &tri;
   // 调用三角形的求面积函数 area
   shape->area();
   
   return 0;
}

重定义(隐藏)

参考资料

上一篇 下一篇

猜你喜欢

热点阅读