当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

高质量C++/C编程指南-第8章-C++函数的高级特点(2)[VC/C++编程]

赞助商链接



  本文“高质量C++/C编程指南-第8章-C++函数的高级特点(2)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

8.1.3 当心隐式范例转换招致重载函数产生二义性

示例8-1-3中,第一个output函数的参数是int范例,第二个output函数的参数是float范例.由于数字本身没有范例,将数字当作参数时将自动举行范例转换(称为隐式范例转换).语句output(0.5)将产生编译错误,因为编译器不知道该将0.5转换成int还是float范例的参数.隐式范例转换在很多地方可以简化程序的书写,但是也大概留下隐患.

# include <iostream.h>

void output( int x); // 函数声明

void output( float x); // 函数声明

void output( int x)

{

cout << " output int " << x << endl ;

}

void output( float x)

{

cout << " output float " << x << endl ;

}

void main(void)

{

int x = 1;

float y = 1.0;

output(x); // output int 1

output(y); // output float 1

output(1); // output int 1

// output(0.5); // error! ambiguous call, 因为自动范例转换

output(int(0.5)); // output int 0

output(float(0.5)); // output float 0.5

}

示例8-1-3 隐式范例转换招致重载函数产生二义性

8.2 成员函数的重载、覆盖与躲藏
成员函数的重载、覆盖(override)与躲藏很简单混合,C++程序员必必要搞清楚概念,不然错误将防不胜防.

8.2.1 重载与覆盖

成员函数被重载的特点:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数差别;

(4)virtual关键字无关紧要.

覆盖是指派生类函数覆盖基类函数,特点是:

(1)差别的范围(辨别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual关键字.

示例8-2-1中,函数Base::f(int)与Base::f(float)彼此重载,而Base::g(void)被Derived::g(void)覆盖.

#include <iostream.h>

class Base

{

public:

void f(int x){ cout << "Base::f(int) " << x << endl; }

void f(float x){ cout << "Base::f(float) " << x << endl; }

virtual void g(void){ cout << "Base::g(void)" << endl;}

};

class Derived : public Base

{

public:

virtual void g(void){ cout << "Derived::g(void)" << endl;}

};

void main(void)

{

Derived d;

Base *pb = &d;

pb->f(42); // Base::f(int) 42

pb->f(3.14f); // Base::f(float) 3.14

pb->g(); // Derived::g(void)

}

示例8-2-1成员函数的重载和覆盖


  以上是“高质量C++/C编程指南-第8章-C++函数的高级特点(2)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>高质量C++/C编程指南-第7章-内存管理(6)</b>
  • 高质量C++/C编程指南-第7章-内存管理(7)
  • 高质量C++/C编程指南-第8章-C++函数的高级特点(1)
  • 高质量C++/C编程指南-第8章-C++函数的高级特点(2)
  • 高质量C++/C编程指南-第8章-C++函数的高级特点(3)
  • <b>高质量C++/C编程指南-第8章-C++函数的高级特点(4)</b>
  • <b>高质量C++/C编程指南-第9章-类的构造函数、析构函数与赋值函数(1</b>
  • 高质量C++/C编程指南-第9章-类的构造函数、析构函数与赋值函数(2
  • 高质量C++/C编程指南-第9章-类的构造函数、析构函数与赋值函数(3
  • 高质量C++/C编程指南-第9章-类的构造函数、析构函数与赋值函数(4
  • <b>高质量C++/C编程指南-第10章-类的担当与组合(1)</b>
  • 高质量C++/C编程指南-第10章-类的担当与组合(2)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .