首页 > 代码库 > C++学习基础九——继承

C++学习基础九——继承

1.不同于Java中通过extends实现继承,C++是通过:实现的。
2.C++中同样包含public,private,protected三个关键字:
public关键字表示在任意其他类中可调用该成员。
private关键字表示该成员只能在声明该成员的类中使用。
protected关键字用于继承,可在本类中调用声明为protected的成员,也可以在子类中通过子类对象调用,而不能通过父类对象调用。
 
3.virtual关键字表示该函数可以被子类继承并重写。
如果父类的成员函数声明为virtual,则子类可以重新定义该成员函数,重新定义时去掉virtual关键字。
如果父类的成员函数是普通的函数,则子类继承之后不能重新定义该函数。
 
4.代码片段如下:
 1 #include <iostream> 2 #include <string> 3  4 using namespace std; 5  6 class Item_base 7 { 8 public: 9     Item_base(const string &is,double p):isbn(is),price(p){}10     string book()11     {12         return isbn;13     }14     virtual double calMoney(int c)15     {16         return c * price;17     }18 private:19     string isbn;20 protected:21     double price;    22 };23 24 class Bulk_item : public Item_base25 {26 public:27     Bulk_item::Bulk_item(const string &is,double p,int c,double dis):28         Item_base(is,p),min_py(c),discocunt(dis){}29     double calMoney(int c)30     {31         cout<<endl<<"子类"<<endl; 32         if(c > min_py)33         {34             return c * price * discocunt;35         }36         else37         {38             return c * price;39         }40     } 41     void test()42     {43         cout<<endl<<"子类测试!!"<<endl;44     }45 private:46     int min_py;47     double discocunt;48 };49 50 51     52 int main()53 {54     string itemIsbn = "x-123-1234-x";55     Item_base item(itemIsbn,10.0);56     cout<<item.calMoney(100)<<endl;57     58     Bulk_item item2("123-456-x",10.0,30,0.8);59     cout<<item2.calMoney(100)<<endl;60     item2.test();61     62     Item_base *item3 = new Bulk_item("123-456-789-x",10.0,10,0.8);63     cout<<item3->calMoney(20)<<endl;64     //不能调用子类的test方法 65     return 0;66 }

 

后续更新中....

C++学习基础九——继承