C++ 继承篇第一课
好久没有写心得了,自己真是太low比了。不说那么多废话了,感情操练起来吧。
今天学习的是C++ 继承篇的第一课。继承是面向对象的一大特性,要学习面向对象必定要联系到继承。
例子
代码中举出了例子:
这个例子是人和工人的例子,很简单明了。
工人是人的派生类,人事工人的基类
Person.h
#include <iostream>
#include <string>
#include "stdlib.h"
using namespace :: std;
class Person{
public:
string p_name;
int p_age;
string p_sex;
public:
Person();
Person(string m_name,int m_age,string m_sex);
~Person();
void eat();
void getAll();
void setName(string m_name);
void setAge(int m_age);
void setSex(string m_sex);
string getName();
int getAge();
string getSex();
};
上面代码中成员变量和成员方法都是公有的。
Person.cpp
以下就是一些构造函数以及set、get方法
#include "Person.h"
#include "stdlib.h"
using namespace::std;
Person::Person(){
cout << "Person默认的构造函数" << endl;
}
Person::Person(string m_name,int m_age,string m_sex){
this->p_name = m_name;
this->p_age = m_age;
this->p_sex = m_sex;
cout << "带参数的构造函数" << endl;
}
Person::~Person(){
cout << "Person我是析构函数" << endl;
}
void Person::getAll(){
cout << "我的姓名:" << this->p_name << ",我的年龄:" << this->p_age << ",我的性别:" << this->p_sex << endl;
}
void Person:: eat(){
cout << "我要吃东西" << endl;
}
void Person::setAge(int m_age){
this->p_age = m_age;
}
void Person::setName(string m_name){
this->p_name = m_name;
}
void Person::setSex(string m_sex){
this->p_sex = m_sex;
}
string Person::getName(){
return this->p_name;
}
int Person::getAge(){
return this->p_age;
}
string Person::getSex(){
return this->p_sex;
}
Worker.h
#include "Person.h"
#include "iostream"
class Worker:public Person{
private:
int iWorkAge;
int iSalary;
public:
Worker();
~Worker();
void work();
void getAll();
void setWorkAge(int mWorkAge);
void setSalary(int mSalary);
int getWorkAge();
int getSalary();
};
Worker.h中引用了Person类。继承方法就是:public Person
public 表示继承的类型是公有继承
Worker中定义了工龄和工资。
Worker.cpp
Worker中的构造方法和get、set方法
#include <stdio.h>
#include "Worker.h"
Worker::Worker(){
cout << "我是工人的默认构造函数" <<endl;
}
Worker::~Worker(){
cout << "我是工人的默认析构函数" << endl;
}
void Worker::getAll(){
cout << this->p_sex << endl;
cout << "我的工龄是:" << this->iWorkAge << ",我的工资是:" << this->iSalary << endl;
}
void Worker::work(){
cout << "我要去工作啦" << endl;
}
void Worker::setSalary(int mSalary){
this->iSalary = mSalary;
}
void Worker::setWorkAge(int mWorkAge){
this->iWorkAge = mWorkAge;
}
int Worker::getSalary(){
return this->iSalary;
}
int Worker::getWorkAge(){
return this->iWorkAge;
}
Main.cpp
#include <iostream>
#include "Worker.h"
using namespace std;
int main(int argc, const char * argv[]) {
Worker *worker = new Worker();
worker->setName("杨程巍");
worker->setAge(18);
worker->setSex("man");
worker->setSalary(8000);
worker->setWorkAge(2);
worker->Person::getAll();
worker->getAll();
delete worker;
worker = NULL;
return 0;
}
打印结果:
Person默认的构造函数
我是工人的默认构造函数
我的姓名:杨程巍,我的年龄:18,我的性别:man
man
我的工龄是:2,我的工资是:8000
我是工人的默认析构函数
Person我是析构函数
Program ended with exit code: 0
先看到打印的是Person的构造方法。顺序是:
Person构造->Worker构造->Worker析构->Person析构
以上这些就是一个简单的继承,但是!继承不止如此,马上更新