C++類繼承--繼承後函數的值

類的繼承會首先尋找基類,若基類未實現,則會尋找派生類的函數函數

1. class繼承,函數不繼承blog

#include <stdio.h>

class Base
{
public:
	Base(){}
	~Base(){}

	int a;
	void setA()
	{
		a  = 1;
	}
};

class A:public Base
{
public:
	A(){}
	~A(){}
	
	void setA()
	{
		a  = 2;
	}
	
};

class B:public Base
{
public:
	B(){}
	~B(){}
	
	void setA()
	{
		a = 3;
	}
};

int main()
{
	A *ax = new A();
	B *bx = new B();
	Base *aClass =  ax;
	Base *bClass = bx;
	aClass->setA();
	bClass->setA();

	printf("a value of a %d\n", aClass->a);
	printf("a value of b %d\n", bClass->a);
	return 0;
}

  運行結果:繼承

2. 函數和Class都繼承io

#include <stdio.h>

class Base
{
public:
	Base(){}
	~Base(){}

	int a;
	virtual void setA()
	{
		a  = 1;
	}
};

class A:public Base
{
public:
	A(){}
	~A(){}
	
	virtual void setA()
	{
		a  = 2;
	}
	
};

class B:public Base
{
public:
	B(){}
	~B(){}
	
	virtual void setA()
	{
		a = 3;
	}
};

int main()
{
	A *ax = new A();
	B *bx = new B();
	Base *aClass =  ax;
	Base *bClass = bx;
	aClass->setA();
	bClass->setA();

	printf("a value of a %d\n", aClass->a);
	printf("a value of b %d\n", bClass->a);
	return 0;
}

  運行結果:注意派生類中能夠不寫virtual,最好寫上,以辨別是函數繼承class

  若將2中基類的函數寫爲純虛函數,運行的結果同樣,可是若是基類是純虛函數,派生類必須實現相應的函數。im

class Base
{
public:
	Base(){}
	~Base(){}

	int a;
	virtual void setA()=0;
	
};

  

3. 類A中不有函數,則繼承自基類img

class A:public Base
{
public:
	A(){}
	~A(){}
	
};

 結果爲:di

 

相關文章
相關標籤/搜索