C++11 virtual函数学习笔记
#include<iostream>
#include<string>
using namespace std;
class Base
{
public:
Base(){}
~Base(){}
public:
virtual void f1(int x){ cout << "baseclass: f1() " << x << endl; }
virtual void f2()final{ cout << "baseclass: f2() " << endl; }
void f3(int x){ cout << "baseclass : f3() " <<x<< endl; }
virtual void f4(){ cout << "baseclass:f4()" << endl; }
//string isbn()const;
//virtual double net_price(size_t n)const final;
};
class Derive:public Base
{
public:
Derive(){}
~Derive(){}
public:
//与基类的virtual函数同名不同參数的是重载函数,不能加上override,能够加virtual
void f1(double x){ cout << "double derive class :f1()" << x << endl; }
//与基类的virtual函数同名同參数的是覆盖函数,能够加virtual,override
void f1(int x)override{ cout << "int derived class :f1()" << x << endl; }
//基类的f2()加了final,于是去掉凝视出错
//void f2()override{ cout << "override derived class: f2() " << endl; }
//可是奇怪的来了,与基类的非virtual函数同名同參数的是居然也是覆盖函数!
//假设去掉凝视则会输出“"derive class: f3()”
//我觉得应该产生编译错误,可是却没有
//void f3(int x){ cout << "derive class: f3() " <<x << endl; } //我们看f4()没有不论什么问题,由于baseclass中声明是virtual,在派生类中会自己主动把f4()变为virtual
void f4(){ cout << "derive class :f4() " << endl; }
};
int main()
{
Base* pBase = new Base();
pBase->f1(1);
pBase->f2();
pBase->f3(3);
pBase->f4();
cout << endl;
Derive* pDerive = new Derive();
pDerive->f1(2.0);
pDerive->f1(2);
//pDerive->f2();
pDerive->f3(3);
pDerive->f4();
cout << endl;
return 0;
}问题我已经自己解决,原来与virtual函数无关,仅仅是名字冲突与继承的问题。派生类的成员会隐藏同名的基类成员。
C++11 virtual函数学习笔记的更多相关文章
- DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
- DirectX 11游戏编程学习笔记之6: 第5章The Rendering Pipeline(渲染管线)
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
- C++学习基础十六-- 函数学习笔记
C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则 ...
- DirectX 11游戏编程学习笔记之1: 开场白
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 这是我之前的博客系列"DirectX9.0c游戏开发手记之'龙书'第二版学习笔记 ...
- contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>
说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ---------------------------------------------- ...
- MYSQL存储过程和函数学习笔记
学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...
- DirectX 11游戏编程学习笔记2: 文章1章Vector Algebra(向量代数)
本文由哈里_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页.而实体书是800多页,所以我在提到相关概念的时候.会使用章节号而 ...
- Swift2.0 函数学习笔记
最近又有点忙,忙着找工作,忙着适应这个新环境.现在好了,上班两周周了,也适应过来了,又有时间安安静静的就行我们前面的学习了.今天这篇笔记,记录的就是函数的使用.下面这些代码基本上是理清楚了函数的额使用 ...
- c++11 线程池学习笔记 (一) 任务队列
学习内容来自一下地址 http://www.cnblogs.com/qicosmos/p/4772486.html github https://github.com/qicosmos/cosmos ...
随机推荐
- Redis测井系统
什么是 SLOWLOG Slow log 是 Redis 用来记录查询运行时间的日志系统. 查询运行时间指的是不包含像client响应(talking).发送回复等 IO 操作,而单单是运行一个查询命 ...
- Web APi之认证
Web APi之认证(Authentication)两种实现方式后续[三](十五) 前言 之前一直在找工作中,过程也是令人着实的心塞,最后还是稳定了下来,博客也停止更新快一个月了,学如逆水行舟,不 ...
- c# 用正则表达式在指定的字符串中每隔指定个数的文字插入指定字符串
public static string AddNewLine(string inString,int num,string addString="\r\n") { return ...
- 3.cocos2dx它Menu,由menu为了实现场景切换
1 头文件 TMenu.h #ifndef __TMENU_H__ #define __TMENU_H__ #include "cocos2d.h" USING_NS_CC; ...
- Linux IO工具 iotop备择方案iopp
iotop毫无疑问linux IO检测上是一个很好的工具,但苦于要求和内核版本Python版本号.我的很多朋友放弃了.我也是.无意中发现iopp,使用c书面,与此iotop它是一个作用.nice! 一 ...
- 使用mysqlbinlog工具的基础上及时恢复数据的位置或点
使用mysqlbinlog工具的基础上及时恢复的位置或点 MySQL备份一般采取完全备份的形式加日志备份.让我们运行一个完整备份,每天.每小时运行二进制日志备份. 这样在MySQL Server故障后 ...
- ROADS+dijkstra的灵活运用+POJ
ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10742 Accepted: 3949 Descriptio ...
- 第二章 自己的框架WMTS服务,下载数据集成的文章1
在构建数据源下载文件的叙述性说明第一步 如此XML结构体 <?xml version="1.0" encoding="utf-8"?> <on ...
- Log4j配置文件位置+Spring数据源配置文件位置
一个.Log4j配置文件位置 1.加载自己主动 当应用程序启动,缺省情况下,这将是src文件夹搜索log4j.xml型材.如果不存在.我们将继续寻找log4j.properties文件,仅仅要找到当中 ...
- SPOJ 15. The Shortest Path 堆优化Dijsktra
You are given a list of cities. Each direct connection between two cities has its transportation cos ...