C++——继承
本文探讨public,protected,private继承的关系与用法。
继承的格式:class worker : public Person
注意是:
几种继承之间的关系:
子类private继承后,父类中的成员都将继承到子类的private访问限定符中,子类无法访问父类的成员。
子类不能继承并使用父类的私有成员
public继承,父类中的public,protected子类可以访问,private不能访问
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;
}