C++——继承

本文探讨public,protected,private继承的关系与用法。

继承的格式:class worker : public Person
注意是
几种继承之间的关系:C++——继承

子类private继承后,父类中的成员都将继承到子类的private访问限定符中,子类无法访问父类的成员。
子类不能继承并使用父类的私有成员
C++——继承
public继承,父类中的public,protected子类可以访问,private不能访问

C++——继承

protected继承中,public,protected在子类中都将继承到子类的protected访问限定符下,子类无法正常访问父类的public成员。

public 中的东西都会被继承(有简化代码的功能)

  • main 文件
#include <iostream>
#include "Person.h"
#include "worker.h"

using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
//	Person *p = new worker();
//	
//	p->eat();
//	p->m_strName = "jiyacheng";
//	p->m_iAge = 20;
//	
//	cout << p->m_iAge << p->m_strName << endl;
//	delete p;
//	p = NULL;	

	worker w;
	w.eat();

	return 0;
}
  • Person 头文件
#ifndef PERSON_H
#define PERSON_H
#include <string>
using namespace std;

class Person
{
	public:
		Person();
		~Person();
		void eat();
	protected:
		int m_iAge;
		string m_strName;
};

#endif

//保护继承protected 
  • Person cpp文件
#include "Person.h"
#include <iostream>

using namespace std;

Person :: Person()
{
	cout << "Person()" << endl;
}

Person :: ~Person(){
	cout << "~Person" << endl;
}

void Person :: eat(){
	cout << "eat()" << endl;
}
  • worker头文件
#ifndef WORKER_H
#define WORKER_H
#include "Person.h"

class worker : public Person
{
	public:
		worker();
		~worker();
		void working();
		int m_iSalary;		
};

#endif
  • worker cpp文件
#include "worker.h"
#include <iostream>
using namespace std;

worker :: worker(){
	m_iAge = 12;
	m_strName = "ji";
	cout << "Work()" << endl;
}

worker :: ~worker(){
	cout << "~work()" << endl;
}

void working(){
	cout << "working()" << endl;
}