1. 继承:一个类A可以继承另一个类B,那么我们称类B为基类(父类),类A为派生类 (子类)。
2. 派生类从基类继承了所有成员,除了构造函数、析构函数、=函数。
3. 基类的私有成员,虽然它们也是派生类的私有成员,但是不能在派生类中定义的成员函数访问。这些基类的私有成员只能通过基类的公有成员函数访问。
4. 子类可以自己实现与父类成员函数原型相同(函数名、参数列表)的成员函数,称为覆盖。覆盖是函数重载的特例,覆盖一定是发生在继承的过程中。
在子类中调用被覆盖的父类版本的函数时,在函数名前加Base:: (基类类名base)比如Point::
5. 派生类中的构造函数
6. protected:
被protected修饰的成员只能在当前类以及其派生类中直接访问,其它类或者函数依旧不可见。
附源码:
1 #include <iostream> 2 3 using namespace std; 4 class Base{ 5 public: 6 Base(int i):b_number(i){} 7 int get_number()const{return b_number;} 8 void print(){ 9 cout<<b_number<<endl; 10 } 11 //private: 12 protected: 13 int b_number; 14 }; 15 class Derived:public Base{ 16 public: 17 Derived(int i,int j):Base(i),d_number(j){} 18 void print(){ 19 // cout<<get_number()<<" "; 20 cout<<b_number<<" "; 21 cout<<d_number<<endl; 22 } 23 private: 24 int d_number; 25 }; 26 int main(int argc, const char * argv[]) { 27 Base a(2); 28 Derived b(3,4); 29 cout<<"a is "; 30 a.print(); 31 cout<<"b is "; 32 b.print(); 33 cout<<"base part of b is "; 34 b.Base::print(); 35 return 0; 36 }
时间: 2024-10-12 21:09:54