您的位置:首页 > 编程语言 > C语言/C++

欢迎使用CSDN-markdown编辑器

2016-01-14 17:46 676 查看

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.0Person构造Worker构造Worker析构Person析构

以上这些就是一个简单的继承,但是!继承不止如此,马上更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c++继承