设为首页 加入收藏

TOP

VC++入门经典学习笔记--虚函数(二)
2016-09-16 23:03:12 】 浏览:544
Tags:入门 经典 学习 笔记 函数
Box myBox{ 2.0, 3.0, 4.0 }; //声明一个派生类的箱子(成员变量大小相同) CGlassBox myClassBox{ 2.0, 3.0, 4.0 }; //创建一个基类CBox对象的指针 CBox* pBox{}; //指针指向基类 pBox = &myBox; //调用函数showVolume pBox->showVolume(); //指针指向派生类 pBox = &myClassBox; pBox->showVolume(); system("pause"); return 0; }

运行结果:

  CBox的体积是24
  CBox的体积是20.4  

输出与上一个示例的输出完全相同,在上一个示例中,我们在函数调用中使用了显式的对象。从本示例可以得出这样的结论:虚函数机制借助于指向基类的指针同样能够正常工作,实际调用的函数是基于被指向的对象类型而选择的。

即使我们不知道程序中某个基类指针所指对象的准确类型(例如,某个指针作为实参传递给函数时),虚函数机制也能确保调用正确的函数(例如,某个指针作为实参传递给函数时)。这是一种特别强大的功能,因此,务必充分理解。多态性是一种我们将多次使用的基本C++机制。

6.使用引用处理虚函数

如果定义一个形参为基类引用的函数,则可以给该函数传递派生类的对象作为实参。该函数在执行时,将自动为传递进来的对象选择适当的虚函数。我们将上一个示例中的main()函数修改成调用一个形参为引用的函数,就可以看到这种情况。
同样仅修改 新建项目名称.cpp文件:

void output(const CBox& aBox);             //声明一个传引用函数
int _tmain(int argc, _TCHAR* argv[])
{
    //声明一个CBox
    CBox myBox{ 2.0, 3.0, 4.0 };
    //声明一个派生类的箱子(成员变量大小相同)
    CGlassBox myClassBox{ 2.0, 3.0, 4.0 };
    //调用函数
    output(myBox);
    output(myClassBox);

    system("pause"); 
    return 0;
}

void output(const CBox& aBox)
{
    aBox.showVolume();
}

运行结果:

  CBox的体积是24
  CBox的体积是20.4

main()函数现在由两次对output()函数的调用组成,第一次用基类对象作为实参,第二次用派生类对象作为实参。因为形参是基类的引用,所以output()函数可以接受这两种类对象实参,并根据初始化引用的对象种类,调用适当的虚函数volume();
虚函数机制确实能够借助于引用形参起作用。多态机制可用于指针和引用。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java客户端上传图片(文件)到c++.. 下一篇Windows编程 内存中加载图片并显..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目