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 ...
随机推荐
- 【C语言探索之旅】 第二部分第四课:字符串
内容简介 1.课程大纲 2.第二部分第四课: 字符串 3.第二部分第五课预告: 预处理 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...
- Yaha,Yaho
Yaha: Yaho: 听雪楼上听雪落,雪落无声空余楼. 同样的地方,一坐三年多,人走楼空,回顾空留. 自己非常白痴地画着苹果,非常嗨森地逗自己玩. 这两层精致的书库是大学里面能容纳我的地方(ABC的 ...
- ng-repeat出现环路输出Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique
采用ng-repeat循环发生错误时,如下面的输出对象: Duplicates in a repeater are not allowed. Use 'track by' expression to ...
- implements KeyListener但关键监听器监听少
今天写的游戏.主要听众,但它并不总是加入了育雏, 我实现了接口,但不听 后来,我发现只是没想到服用口服细致怎么称呼控制panel上面增加了一个addKeyListener(this); 基础不坚固.马 ...
- OpenCVR 有新成员 OpenCVV OpenCVC
OpenCVC主要负责OpenCVR报名, OpenCVV支持Android IOS Mac Windows 的client 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- leetcode文章137称号-Single Number II
#include<stdio.h> #include<stdlib.h> int singleNumber(int* nums, int numsSize) { int cou ...
- Spring配置与第一Spring HelloWorld
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 本文将主讲了Spring在Eclipse下的配置,并用Spring执行了第一个HelloWo ...
- Debian 7设备nginx周围环境、编译并安装和启动
/********************************************************************* * Author : Samson * Date ...
- 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)
引用 前几天在网上看到一个淘宝的面试题:有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果.一:分析题目 从题中可以看到“很大的List”以及“ ...
- Angular报错记录
一 找不到Controller 出现这种错误,一般都是没有找到需要的Controller,需要仔细检查是否所需的Controller已经正确引入