标签:函数定义 引入 默认 lock loaded 别名 不同 amp 操作
overloaded function: 函数名相同,在相同的域中声明,参数表不同
overloading function: 允许多个函数共享同一个函数名,针对不同的参数类型提供不同的操作
程序设计的一种局限性:同一个域中出现的名字必须指向一个唯一实体(唯一的对象,函数,class类型等)
如果两个函数的参数表中,只有默认实参不同,认为是重复声明
int max( int ia, int sz );
int max( int , int = 10);
当一个参数类型是const
或者volatile
的时候,在识别函数声明是否相同时,并不考虑const和voliatile修饰符
void f( int );
void f( const int ); 两者相同
如果把const和volatile应用在指针或者引用参数指向的类型上,则在判断函数声明时需要考虑const和volatile修饰符。
void f( int * ) 与 void f( const int * ) 声明了不同的函数
void f( int & ) 与 void f( const int & ) 声明了不同的函数
void f( int ) 与 void f( const int ) 声明了相同函数
函数覆盖:不同域中,函数名相同
void print( const string &);
void print( doubel );
void foo( int val )
{
extern void print( int ); //独立的域,隐藏print()的两个实例
print("hello"); // 错误,在这个域中被隐藏了
print(val);
}
可以在同一个名字空间声明一组重载函数
using声明只是一个声明,由using声明引入的函数就好像在该声明出现的地方被声明一样。using声明不能向一个域中引入同样名字和参数表的声明
同一重载函数集合中的函数都是在同一个域中被声明的,即使这些声明可能是用using声明或者using指示符引入的
标签:函数定义 引入 默认 lock loaded 别名 不同 amp 操作
原文地址:https://www.cnblogs.com/person3/p/9164756.html