C++学习笔记:通过Virtual函数和Overload实现多态
2010-09-14 21:54
417 查看
Virtual Functions
通过Virtual函数实现late-binding。Virtual 函数使用Inline是没有意义的;
静态函数不能为虚函数;不能声明同名的 static virtual 函数;
构造函数不能定义为Virtual;析构函数可以作为Virtual函数,而且建议这么使用;
在构造、析构函数中调用其它虚函数时,不使用动态机制,是Local调用;
如果在继承关系中,虚函数的默认参数取值不同,根据指针的静态类型选择默认参数的取值;
Base *pBase = new Derived(); //使用Base类函数的默认参数
Derived *pDer = new Derived(); //使用Derived类函数的默认参数
基类的destructor为pure virtual时,派生类是否一定要定义函数才能实例化? //todo
==也可以是虚函数;
Function Overload
参数匹配的原则exact matching
trival conversion
integral promotion
standard conversion
user-defined conversion
ellipsis
函数选择的方式:
对函数的每一个参数,选择一个候选函数的集合,这些集合的交集就是最终选中的函数。如果交集中有多个函数,编译器会提示错误。
注意事项
const修饰函数、函数指针类型参数时,被认为是一种新类型。修饰变量的时候不是一种新类型。
函数只有返回值类型不同是不行的,这无法区分调用。
如果两个函数都可匹配,const函数优先。都不是const函数时,类型提升优先,如short->int优先于short->char。
default参数,ellipsis参数会影响函数的选择。
相关文章推荐
- C++学习笔记:多态的实现原理
- C++ 学习笔记(二) 多态的实现
- Shader学习笔记,通过GLSL实现(一)
- C++学习笔记--继承与多态
- C++学习笔记之覆盖、重载、多态的区别
- C++学习笔记之虚拟与多态
- 【C++】学习笔记草稿版15(多态)
- c++学习笔记—二叉树基本操作的实现
- C++学习之多态篇(虚函数和虚析构函数的实现原理--虚函数表)
- effective C++ 学习笔记 实现&&继承与面向对象设计
- C++虚函数和多态学习笔记
- Quartz.NET 2.0 学习笔记(3) :通过配置文件实现任务调度
- C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记
- 【知了堂学习笔记】mybatis通过代理实现增删改查
- PE文件学习系列笔记四-C++实现PE文件的分析
- C++多态和虚函数学习笔记
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(1) f(x) = 2f(x-1) + x^2
- C++ FAQ学习笔记 15 章 通过 <iostream> 和 <cstdio>输入/输出
- OpenCV示例学习笔记(1)-contours2.cpp-通过findContours 函数实现轮廓提取
- c++学习笔记(7)——关于类的实现(以vector为例)