C++类继承--继承后函数的值
类的继承会首先寻找基类,若基类未实现,则会寻找派生类的函数
1. class继承,函数不继承
#include <stdio.h> class Base
{
public:
Base(){}
~Base(){} int a;
void setA()
{
a = 1;
}
}; class A:public Base
{
public:
A(){}
~A(){} void setA()
{
a = 2;
} }; class B:public Base
{
public:
B(){}
~B(){} void setA()
{
a = 3;
}
}; int main()
{
A *ax = new A();
B *bx = new B();
Base *aClass = ax;
Base *bClass = bx;
aClass->setA();
bClass->setA(); printf("a value of a %d\n", aClass->a);
printf("a value of b %d\n", bClass->a);
return 0;
}
运行结果:
2. 函数和Class都继承
#include <stdio.h> class Base
{
public:
Base(){}
~Base(){} int a;
virtual void setA()
{
a = 1;
}
}; class A:public Base
{
public:
A(){}
~A(){} virtual void setA()
{
a = 2;
} }; class B:public Base
{
public:
B(){}
~B(){} virtual void setA()
{
a = 3;
}
}; int main()
{
A *ax = new A();
B *bx = new B();
Base *aClass = ax;
Base *bClass = bx;
aClass->setA();
bClass->setA(); printf("a value of a %d\n", aClass->a);
printf("a value of b %d\n", bClass->a);
return 0;
}
运行结果:注意派生类中可以不写virtual,最好写上,以辨别是函数继承
若将2中基类的函数写为纯虚函数,运行的结果一样,但是如果基类是纯虚函数,派生类必须实现相应的函数。
class Base
{
public:
Base(){}
~Base(){} int a;
virtual void setA()=0; };
3. 类A中不有函数,则继承自基类
class A:public Base
{
public:
A(){}
~A(){} };
结果为:
C++类继承--继承后函数的值的更多相关文章
- C++ Pirmer : 第十五章 : 面向对象程序设计之基类和派生的定义、类型转换与继承与虚函数
基类和派生类的定义以及虚函数 基类Quote的定义: classs Quote { public: Quote() = default; Quote(cosnt std::string& bo ...
- C++学习 之 类的继承中的虚函数(笔记)
1.多态行为 多态是面向对象语言的一种特征,让我们能够以类似的方式处理不同类型的对象.在C++中我们可以通过继承层次结构实现子类型多态. 我们可以通过下面的代码进一步了解多态: #include< ...
- C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类
类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...
- C++中的类继承(2)派生类的默认成员函数
在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() ...
- tornado-模板继承extend,函数和类的导入
大 import tornado.ioloop import tornado.web import tornado.httpserver # 非阻塞 import tornado.options # ...
- 【转】doxygen+graphviz生成工程中的类继承树及函数调用图
转自----hequn8128 在阅读代码量比较多的项目时,类的继承树和函数调用图能够直观地向我们显示类之间或者函数之间的各种关系,方便我们了解程序的整体框架,很多时候可以起到事半功倍的作用.这里尝试 ...
- C++ 由虚基类 虚继承 虚函数 到 虚函数表
//虚基类:一个类可以在一个类族中既被用作虚基类,也被用作非虚基类. class Base1{ public: Base1(){cout<<"Construct Base1!&q ...
- 继承虚函数浅谈 c++ 类,继承类,有虚函数的类,虚拟继承的类的内存布局,使用vs2010打印布局结果。
本文笔者在青岛逛街的时候突然想到的...最近就有想写几篇关于继承虚函数的笔记,所以回家到之后就奋笔疾书的写出来发布了 应用sizeof函数求类巨细这个问题在很多面试,口试题中很轻易考,而涉及到类的时候 ...
- C++类有继承时,析构函数必须为虚函数
C++类有继承时,析构函数必须为虚函数.如果不是虚函数,则使用时可能存在内在泄漏的问题. 假设我们有这样一种继承关系: 如果我们以这种方式创建对象: SubClass* pObj = new SubC ...
随机推荐
- 微信朋友圈评论/回复/cell/键盘谈起
微信朋友圈评论功能的细节考虑及实现 微信朋友圈回复tableview iOS 实现微信朋友圈评论回复功能(一)
- 对EM算法的理解
EM算法中要寻找的参数θ,与K-means聚类中的质心是对应的,在高斯混合模型中确定了θ,便可为样本进行类别的划分,属于哪个高斯分布的概率大就是哪一类,而这一点与K-means中的质心一样,质心确定了 ...
- [CH3803] 扑克牌 (期望DP+记忆化搜索)
[题目链接] [CH3803] 扑克牌 [题面描述] \(54\)张牌,每次随机摸一张,求得到 A张黑桃 B张红桃 C张梅花 D张方块 的期望步数.特别地,大王和小王可以当做任意一种花色,当然,会选择 ...
- 进阶篇:4.2)DFA设计指南:优化装配工序
本章目的:针对每一个装配工序,运用DFA进行优化. 1.前言 工序的优化在产品的精简之后. 这个是作者的实际做完DFA后得出的结论.原因倒是很简单,一个精密的产品,哪怕只是优化了一个零件,对整体的装配 ...
- java中如何把图片转换成二进制流的代码
在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...
- Jenkins添加maven插件
1.1.1 安装Maven插件 我们要使用Jenkins+Maven对Java项目进行构建,需要安装Maven Project Plugin,具体安装过程请参考插件管理部分 1.1.2 3.Linux ...
- cookie session token详解
cookie session token详解 转自:http://www.cnblogs.com/moyand/ 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, ...
- 配置mybatis解决log4j未正常打印sql的问题
在mybatis-config.xml中增加配置: <settings> <setting name="logImpl" value="STDOUT_L ...
- webstorm 上传代码到gitlab
1. 2. 3.push 4.填写上传url
- Robot Framework(用户关键字)
在 Robot Framework 中关键字的创建分两种:系统关键字和用户关键字.系统关键字需要通过脚本开发相应的类和方法,这个我们将在后面的章节介绍.用户关键字的创建就要简单得多,它主要利用现有的系 ...