- 浏览: 177664 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yizhichao116:
大哥
设置为可编译链接
1) .m文件右键-&g ...
Windows下Object-C编译环境的搭建
1、定义
它允许函数调用与函数体之间的联系在运行时才建立,即在运行时才决定如何动作。虚函数声明的格式:
virtual 返回类型 函数名(形参表)
{
函数体
}
2、虚函数做几点补充说明:
(1)因为虚函数使用的基础是赋值兼容,而赋值兼容成立的条件是派生类之从基类公有派生而来。所以使用虚函数,派生类必须是基类公有派生的;
(2)定义虚函数,不一定要在最高层的类中,而是看在需要动态多态性的几个层次中的最高层类中声明虚函数;
(3)虽然在上述示例代码中main()主函数实现部分,我们也可以使用相应图形对象和点运算符的方式来访问虚函数,如:rectangcle.showArea(),但是这种调用在编译时进行静态联编,它没有充分利用虚函数的特性。只有通过基类对象来访问虚函数才能获得动态联编的特性;
(4)一个虚函数无论配公有继承了多少次,它仍然是虚函数;
(5)虚函数必须是所在类的成员函数,而不能是友元函数,也不能是静态成员函数。因为虚函数调用要靠特定的对象类决定该激活哪一个函数;
(6)内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的即使虚函数在类内部定义,编译时将其看作非内联;
(7)构造函数不能是虚函数,但析构函数可以是虚函数;
3、纯虚函数
纯虚函数是在声明虚函数时被“初始化”为0的虚函数。不定义对象而只作为一种基本类型用作继承的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。抽象类的作用是作为一个类族的共同基类。
4、虚函数特性
1)虚函数是c++众多运行时多态特性中开销最小,最常用的机制。
它允许函数调用与函数体之间的联系在运行时才建立,即在运行时才决定如何动作。虚函数声明的格式:
virtual 返回类型 函数名(形参表)
{
函数体
}
2、虚函数做几点补充说明:
(1)因为虚函数使用的基础是赋值兼容,而赋值兼容成立的条件是派生类之从基类公有派生而来。所以使用虚函数,派生类必须是基类公有派生的;
(2)定义虚函数,不一定要在最高层的类中,而是看在需要动态多态性的几个层次中的最高层类中声明虚函数;
(3)虽然在上述示例代码中main()主函数实现部分,我们也可以使用相应图形对象和点运算符的方式来访问虚函数,如:rectangcle.showArea(),但是这种调用在编译时进行静态联编,它没有充分利用虚函数的特性。只有通过基类对象来访问虚函数才能获得动态联编的特性;
(4)一个虚函数无论配公有继承了多少次,它仍然是虚函数;
(5)虚函数必须是所在类的成员函数,而不能是友元函数,也不能是静态成员函数。因为虚函数调用要靠特定的对象类决定该激活哪一个函数;
(6)内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的即使虚函数在类内部定义,编译时将其看作非内联;
(7)构造函数不能是虚函数,但析构函数可以是虚函数;
3、纯虚函数
纯虚函数是在声明虚函数时被“初始化”为0的虚函数。不定义对象而只作为一种基本类型用作继承的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。抽象类的作用是作为一个类族的共同基类。
4、虚函数特性
1)虚函数是c++众多运行时多态特性中开销最小,最常用的机制。
发表评论
-
c++引用与指针区别
2012-12-17 10:28 776在引用和指针之间存在三大区别: 1、不存在空引用(null ... -
关于c++多继承
2012-12-15 17:47 9951、定义 多继承可以看作是单继承的扩展。所谓多继承是指派生类具 ... -
C++定义全局变量/常量几种方法的区别
2012-12-14 11:06 7881、extern和static不能同时修饰一个变量;其次,st ... -
#ifndef#define#endif的用法
2012-12-14 11:06 833头件的中的#ifndef,这是一个很关键的东西。比如你有两个C ... -
声明与定义的区别
2012-12-14 11:06 658函数或变量在声明时,并没有给它实际的物理内存空间,它有时候可以 ... -
static作用
2012-12-14 11:06 700static作用(修饰函数、局部变量、全局变量) -
const用法
2012-12-13 17:00 670const修饰普通变量和指针 const修饰变量,一般有两种 ... -
c++头文件作用
2012-12-13 16:24 687一、所谓的头文件,其实它的内容跟.cpp文件中的内容是一样的, ... -
typedef用法
2012-12-13 16:12 509Typedef 声明有助于创建平台无关类型,甚至能 ... -
静态数据成员
2012-12-10 19:24 6271、 类体中的数据成员的声明前加上static关键字,该数据 ... -
c++函数
2012-12-08 13:02 7741、c++流操作中,利用cout对象的width属性设置输出字 ... -
指针基础
2012-12-14 11:06 7031、this指针是成员函数所属对象的指针,它指向类对象的地址; ... -
派生类
2012-12-07 13:49 692派生类构造函数和析构函数的调用顺序,当创建派生类对象时,首先调 ... -
函数模板
2012-12-05 10:47 712模板定义: 模板就是实现代码重用机制的一种工具,它可以实现类 ... -
vs2010控制台自动关闭分析
2012-07-25 22:26 17561、 F5是直接运行程序的EXE文件,而Ctrl+F5 ... -
c++(一)
2012-07-23 20:10 628指针与引用的区别: 指针可以为空,但是引用不能为空,指针可以 ... -
gdb命令总结
2012-07-11 21:32 1006GDB命令总结: 1、b 行号 断点 2、L 显示源代码 ... -
c++运算符
2012-05-18 08:36 915转载:http://zhai89.diandian.com/p ... -
处理好c++与java的关系
2012-05-08 22:20 933java使你工作的利器,c++使你成长的沃土;语言只是工具而已 ...
相关推荐
1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有...
学习 C++ 的同志不知道有没有和我一样遇到过这样的困惑:C++中的虚函数到底怎么实现的?在各种继承关系中,虚函数表的结构到底是什么样的?曾经我是很想当然,可是后来在使用ATL的过程中,我发现并不是我想的那样。...
构造函数不能声明为虚函数,析构函数可以声明为虚函数。
虚函数表中虚函数的分布情况;其中包括发生继承的情况下虚函数表中虚函数的分布情况;
高质量的C++多态讲解,详细讲解虚函数,虚函数表,虚函数继承,虚函数继承下的内存分配等
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容...
C++虚函数表的测试代码,用于学习C++虚函数的调用关系。
2、熟练掌握虚函数的作用及其使用方法。 3、掌握静态关联和动态关联的概念和用法。 4、理解纯虚函数和抽象类的概念和用法。 (二)实验内容 1、定义一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b进行...
c++虚函数.C++中的虚函数的作用主要是实现了多态的机制。
个类如果有虚函数,不管是几个虚函数,都会为这个类声明一个虚函数表,这个虚表是一个含有虚函数的类的,不是说是类对象的。一个含有虚函数的类,不管有多少个数据成员,每个数据成员都有一个虚指针,在内存中,存放...
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际 子类的成员函数。
V6.0验证源码 ,分析虚函数的实现过程 ,强制转换的实质 ,多种指针用法,如果完全看懂了相信你的C++,指针会有一个更深刻的认识。希望对大家有用
C++虚函数及虚函数表解析,内容详细,分析清晰,推荐给大家。
c++里,指针和引用是很重要的概念,这个程序不仅对指针和引用做了说明、使用,而且对子类不能继承父类虚函数也做了说明。
多态是C++语言中的一项重要的机制,虚函数就是为实现多态而设计的。多态就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”。而虚函数表在...
C++实验六 多态性和虚函数的应用 课程 实验报告 作业参考的良品!
自己设计的图形面积计算程序,利用虚函数计算基类及派生类的图形面积,包括三角形、正方形、长方形、梯形
简单例子展示虚函数展现的多态特性,更改一处注释就能对比基类是否是虚函数带来的变化
用C++简单编码实现虚函数,展现虚函数的用法,以及虚析函数的用法 和 判断类的大小(在类中有虚函数的时候,无虚函数的时候)
彻底搞清楚继承是个什么东西 彻底搞清楚虚函数和虚函数表是个什么东西