用基类指针实现多态
来源:互联网 发布:淘宝保证金解冻步骤 编辑:程序博客网 时间:2024/06/10 13:07
基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。
在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有 private 属性的成员变量,它们在派生类中无法访问,更不能使用派生类的构造函数来初始化。
这种矛盾在C++继承中是普遍存在的,解决这个问题的思路是:在派生类的构造函数中调用基类的构造函数。
#include<iostream>
using namespace std;
class people{
public:
people(char *name,int age);
virtual void display() //一定要加virtual,我暂时也不知道为什么,以后再来改吧:(
{
cout<<m_name<<" 今年"<<m_age<<"岁了,是个无业游民"<<endl;
}
protected:
char *m_name;
int m_age;
};
people::people(char *name,int age):m_name(name),m_age(age){}
class teacher:public people{
public:
teacher(char *name,int age,int salary);
virtual void display()
{
cout<<m_name<<"今年"<<"岁了,是个老师,工资"<<m_salary<<endl;
}
private:
int m_salary;
};
teacher::teacher(char *name,int age,int salary):people(name,age),m_salary(salary){} //注意下怎么写的,people(name,age)就是调用的基类构造函数
int main()
{
people *p = new people("王志刚", 23);
p->display();
p = new teacher("赵宏佳", 45, 8200); //可以只用一个指针,指向不同位置
p->display();
}
- 用基类指针实现多态
- 函数指针实现多态
- 指针与引用实现多态
- 函数指针实现的多态
- C++ 通过指针实现多态
- C++多态实现中的指针修正
- 【c++】指针和引用实现多态
- 用函数指针表实现多态
- C 语言实现多态的原理:函数指针
- 多态实现机制(虚表/虚指针)
- C++11智能指针之使用shared_ptr实现多态
- 函数指针实现类似多态的特性
- C++多态中的实现要用指针,而不是虚基类(接口)的对象
- C++多态中的实现要用指针,而不是虚基类(接口)的对象
- 虚函数-虚表-虚指针-多态性-如何实现多态-纯虚函数-抽象类-转
- 虚指针 虚表之c++实现多态的方法
- C++中为什么要用虚函数、指针或引用才能实现多态?
- C++中为什么要用虚函数、指针或引用才能实现多态?
- java 常见需要死记硬背的
- ZCMU-1828-十六进制转八进制
- BZOJ1005: [HNOI2008]明明的烦恼
- OpenMP 中的线程任务调度
- Spring Boot 菜鸟教程 20 elasticsearch
- 用基类指针实现多态
- 刘维尔传记资料
- Android的Crash日志记录
- struts 获取参数(Action 属性接受参数)
- 等概率随机函数的实现
- libsvm 参数以及计算测试点相似度
- C#点滴积累之过程篇
- 18. 4Sum
- 清橙1485 Catch The Penguins 抓企鹅