学習の5週目:派生クラスのコンストラクター

#include<iostream>
#include<string>
using namespace std;
class Student
{
    
    
	private:
		string name;
		int age;
	public:
		Student(const string& s,int n):name(s),age(n){
    
    }
		void show(){
    
    
			cout<<name<<" is "<<age<<" years old";
		}
};

class Skill  
{
    
    
	private:
		string skill;
		friend class CStudent;  //说明CStudent类对象可以访问private
	public:
		Skill(const string& s):skill(s){
    
    }
}; 

class CStudent: public Student
{
    
    
	private:
		string department;
		Skill sk;
	public:
		CStudent(const string& s1,int n,const string& s2,
		const string& s3):Student(s1,n),
		sk(s3){
    
    department =s2;}
		void show()
		{
    
    
			Student::show();
			cout<<" who is in "<<department<<" and good at "<<sk.skill;
		}
}	;


int main()
{
    
    
	CStudent c1("Jeff",20,"BME","running");
	c1.show();
}

注意:

  1. スキルクラスには1つあります。friend class CStudentつまり、CStudentはスキルのフレンドクラスであり、スキルのプライベートクラスにアクセスできます。
  2. CStudentでSkillクラスオブジェクト(has-ar)を宣言し、このクラスオブジェクトを通じてプライベートにアクセスします。
  3. コンストラクターの順序:基本クラス、クラスメンバーオブジェクト、派生クラス。
  4. デストラクタの順序:派生クラス、クラスメンバーオブジェクト、基本クラス

ここに画像の説明を挿入

おすすめ

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