宝杉的博客

UNIX/LINUX;ACE;SNMP;C++
posts - 33, comments - 23, trackbacks - 0, articles - 0

重载(overloaded)、内联(inline)、constvirtual

 

 

重载

内联

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

 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理