1. 程式人生 > >c++常用知識點4

c++常用知識點4

組合與繼承: 組合:has-a關係 繼承:is-a關係 C++類的繼承,指用現有類來建立新的類,即新類會獲得已有類的屬性和行為,並且可以新增新的屬性和行為 新的類稱為子類或派生類,已有類稱為父類或基類! 格式: class 派生類名: 繼承方式 基類名 { //派生類新增加的成員 }; 繼承的過程: 1.接收基類的成員 2.修改成員的訪問許可權或隱藏基類中不需要的東西 3.新增新的屬性和行為 繼承方式: public:公有繼承 priavte:私有繼承 protected:保護繼承 繼承方式決定了  基類中的成員 在派生類內部和在派生類的外部 的訪問許可權。 公有繼承:(掌握) 基類的公有成員、保護成員會成為派生類的公有成員和保護成員,基類的私有成員成為派生類的不可訪問成員 私有繼承:(瞭解) 基類的公有成員、保護成員會成為派生類的私有成員,基類的私有成員成為派生類的不可訪問成員 保護繼承:(瞭解) 基類的公有成員、保護成員會成為派生類的保護成員,基類的私有成員成為派生類的不可訪問成員 -------------------------------------------------------------------------------------------------
#include<iostream>
using namespace std;

class Student
{
public:
	void study()
	{
		cout << "學習使我快樂!\n";
	}
};

class xStudent:public Student
{
public:
	void study()
	{
		cout << "小學生學習四則運算!\n";
	}
};
class zStudent:public Student
{
public:
	void study(int a)
	{
		cout << "中學生學學習幾何代數!\n";
	}
};

int main()
{
	xStudent x;
	x.study();
	x.Student::study();
	zStudent z;
	z.study(10);
	z.Student::study();
	return 0;
}


繼承中的建構函式與解構函式: 建構函式與解構函式不能被繼承 特性: 1.如果基類和派生類有預設的建構函式,編譯器會自動呼叫 2.如果需要把引數傳遞給基類的建構函式,必須定義帶引數的建構函式,且需要以派生類的初始化表的形式呼叫基類的建構函式 3.在呼叫派生類的建構函式之前,會先呼叫基類的建構函式。 4.在派生類物件被銷燬時,會先呼叫派生類自己的解構函式,再呼叫基類的解構函式 -------------------------------------------------------------------------------------------------
#include<iostream>
using namespace std;

class Parent
{
public:
	Parent()
	{
		a = 10;
	}
	Parent(int a):a(a)
	{
		cout << "Parent(int)" << endl;
	}
	void show()
	{
		cout << "a = " << a << endl;
	}
	~Parent()
	{
		cout << "~Parent()" << endl;
	}
private:
	int a;

};
class Child:public Parent
{
public:
	Child()
	{
		b = 10;
	}
	Child(int a,int b):b(b),Parent(a)
	{
		cout << "Child(int,int)" << endl;
	}
	void show()
	{
//		cout << "a = " << a << endl;
		Parent::show();
		cout << "b = " << b << endl;
	}
	~Child()
	{
		cout << "~Child() " << endl;
	}
private:
	int b;
};

int main()
{
	Child c(100,200);
	c.show();
	return 0;
}