学習の5週目:継承と派生の概念

継承:Aは基本クラスとして、BはAの派生クラスとして、BはAを継承し、AはBを派生すると呼ばれます

  1. 派生クラスには、基本クラスのすべてのメンバー関数とメンバー変数があります
  2. 派生クラスは、基本クラスを変更および拡張することによって取得できます
  3. 派生クラスが定義されると、基本クラスに依存せずに独立して使用できます
  4. 派生クラス兄弟のメンバー関数は、基本クラスのプライベートにアクセスできません

派生クラスの記述:
class B:public A{...}

派生オブジェクトのメモリ空間

派生オブジェクトボリューム=ベースオブジェクトボリューム+派生オブジェクト自身のメンバー変数ボリューム
(派生オブジェクトにはベースオブジェクトが含まれます)

#include<iostream>
#include<string>
using namespace std;
class Student{
    
    
	private:
		string name;
		string ID;
		int age;
		char gender;
	public:
		void printfinfo();
		void setinfo(const string& s1,const string& s2,int n, char ch);
		string getname(){
    
    return name;}
};

class CStudent:public Student
{
    
    
	private:
		string department;
	public:
		void printfinfo();
		void setinfo(const string& s1,const string& s2,int n, char ch,const string& s3);
		void qualified(){
    
    
			cout<<"qualified for baoyan\n";
		}
};

void Student::printfinfo()
{
    
    
	cout<<name<<"("<<ID<<", "<<gender<<")"<<" is "<<age<<" years old ";
}

void Student::setinfo(const string& s1,const string& s2,int n,char ch)
{
    
    
	name = s1;
	ID =s2;
	age = n;
	gender = ch;
}

void CStudent::printfinfo()
{
    
    
	Student::printfinfo();
	cout<<", he is in "<<department<<" department";
}

void CStudent::setinfo(const string& s1,const string& s2,int n,char ch,const string& s3)
{
    
    
	Student::setinfo(s1,s2,n,ch);
	department = s3;
}

int main()
{
    
    
	CStudent s1;
	s1.setinfo("Jeff","2018224042",20,'M',"BME");
	s1.printfinfo();cout<<endl;
	cout<<s1.getname()<<" is ";
	s1.qualified();
}
  1. 派生クラスも同じ名前の関数を記述し、同じ名前の関数で同じ名前の基本クラスの関数を呼び出します。これはカバレッジと呼ばれます。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/ZmJ6666/article/details/108577618