Posted on 2007-08-13 10:14
宝杉 阅读(331)
评论(0) 编辑 收藏 引用 所属分类:
C++
重载(overloaded)、内联(inline)、const和virtual
|
重载
|
内联
|
const
|
virtual
|
全局函数
|
√
|
√
|
|
|
类的成员函数
|
√
|
√
|
√
|
√
|
内部标识符
编译器根据参数为每个重载函数创建内部标识符,以便区分忽略返回值与有返回值的重载函数。
连接交换指定符号
C编译过的函数,经过编译器标识后与C++的表示风格不同。所以C++不能直接调用C编译出的函数。C++提供extern “C”
例如:
extern “C”
{
void foo(int x, int y);
… // 其它函数
}
或者写成
extern “C”
{
#include “myheader.h”
… // 其它C头文件
}
全局函数与成员函数同名
全局函数与成员函数同名不算重载,因为函数作用域不同。
为了区别,调用全局函数时,注意格式:
::函数名(参数);
隐式类型转换导致重载函数产生二义性
隐式类型转换:数字本身没有类型,把数字当作参数,自动进行类型转换。
例如:
void output( int x); // 函数声明
void output( float x); // 函数声明
output(0.5)将产生编译错误,因为编译器不知道该将0.5转换成int还是float类型的参数。
正确写法:
output(int(0.5)); // output int 0
output(float(0.5)); // output float 0.5