欢迎使用CSDN-markdown编辑器

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析构

Created with Raphaël 2.1.0 Person构造 Worker构造 Worker析构 Person析构

以上这些就是一个简单的继承,但是!继承不止如此,马上更新


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值