1. 程式人生 > >C++快速入門---this指標和類的繼承(10)

C++快速入門---this指標和類的繼承(10)

C++快速入門---this指標和類的繼承(10)

 

this是一個特殊的指標

class Human {

   char fishc;

   Human(char fishc);

}

Human::Human(char fishc){

   fishc = fishc;

}

"fishc = fishc",怎樣才能讓構造器知道哪個是引數,哪個是屬性呢?

用到它了 - this指標(指向當前的類生成的物件

this->fishc = fishc

現在編譯器就懂了,賦值操作符的左邊將被解釋為當前物件的fishc屬性,右邊將被編譯器解釋為構造器的傳入來的fishc引數。

 

 

繼承

假設我們有一隻烏龜和一隻豬,它們都有一些共同特徵:例如都有嘴巴會吃東西,都睡覺,都會流口水。它們有不同的地方:例如烏龜會游泳,豬會爬樹。

基類是可以派生出其他的類,也稱為父類超類。比如這裡的Animal是基類。

子類是從基類派生出來的類,比如這裡的Trutle類和Pig類是子類,

繼承的語法:

class SubClass : public SuperClass {...}

 

程式碼如下:

#include <iostream>
#include <string>

class Animal//基本 
{
public:
	std::string mouth;//嘴巴
	
	void eat();
	void sleep();
	void drool();//流口水	
};

//Pig繼承於Animal 
class Pig : public Animal
{
public:
	void climb();//上樹 
};

class Turtle : public Animal
{
public:
	void swim();	
};

void Animal::eat()
{
	std::cout << "I'm eatting!" << std::endl;
}

void Animal::sleep()
{
	std::cout << "I'm sleeping!Don't disturb me!" << std::endl;
}

void Animal::drool()
{
	std::cout << "我是公的,看到母的我會流口水,我正在流口水。。。" << std::endl;
}

void Pig::climb()
{
	std::cout << "我是一隻漂亮的小母豬豬,我會上樹,我正在爬樹。。噓。。" << std::endl;
}

void Turtle::swim()
{
	std::cout << "我是一隻小甲魚,當母豬想抓我的時候,我就游到海里。。哈哈。。" << std::endl;
}

int main()
{
	Pig pig;
	Turtle turtle;

	pig.eat();
	turtle.eat();
	pig.climb();
	turtle.swim();
	
	return 0;
}