欢迎使用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 Personpublic 表示继承的类型是公有继承
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++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性