C++ Primer CH9 CH10
2013-10-29 21:25
225 查看
1 重载函数
1 必须体现在参数个数和参数类型差异上,仅仅判断返回值不足重载,会议之前的描述底层函数名+参数个数+参数类型编码。
2 const 修饰的参数不足以重载,比如
void f(int i)
void f(const int i)
不能作为重载函数。
但是如果作为引用或者指针类型,则表示是可以重载的。
比如
void f(int *);
void(const int *);
void (int &);
void(const int &);
2 重载函数与域
重载函数集合的所有函数必须在同一个域中,一个声明在局部函数将隐藏而不是重载全局域中的函数,比如:
void print(const string&);
void print(double);
void foobar(int ival)
{
extern void print(int &);
print("hello,world!") ;// error
print(i); //ok
}
using 声明可以制造一个更大的域范围,该范围内的函数支持重载
3 extern “C" 引用的C函数可以同C++函数重载,但是不能extern ”c“ 两个重载的函数,C编译器不支持函数重载。
4 重载函数的细节,暂时没有兴趣关注。
5 函数模板中的类型参数和非类型参数:
模板非类型参数表示该参数名代表一个潜在的值,模板函数使用的一个常量,而模板实例化的过程中会自动传入这个费类型的参数,这个是编译器自动完成的。
比如:
template <typename Tyte, int size>
type min((const Type(&array)[size])
{
Type min_val = array[0];
for(int i = 1;i<size;i++)
if(array[i]<min_val)
min_val = array[i];
return min_val;
}
6 显式模板实参
显示制定模板参数类型,放弃系统自动推导(避免麻烦和错误)
考虑如下情况:
template <class T> T min(T,T) { ...............}
int main()
{
unsigned int ui;
....
min(ui,1024); //错误T只能绑定在一个类型上,或者unsigned int 或者int
}
解决办法是显式制定模板实参类型,比如 min<unsigned int>(ui,1024)
7 模板编译模式:
包含编译模式:
模板定义在头文件中,包含模板的实现
分离编译模式:
仅包含模板的声明,模板的实现放在C中使用exprot,比如:
exprot template<typename Type>
模板实例化的细节,目前没有兴趣关注了。
1 必须体现在参数个数和参数类型差异上,仅仅判断返回值不足重载,会议之前的描述底层函数名+参数个数+参数类型编码。
2 const 修饰的参数不足以重载,比如
void f(int i)
void f(const int i)
不能作为重载函数。
但是如果作为引用或者指针类型,则表示是可以重载的。
比如
void f(int *);
void(const int *);
void (int &);
void(const int &);
2 重载函数与域
重载函数集合的所有函数必须在同一个域中,一个声明在局部函数将隐藏而不是重载全局域中的函数,比如:
void print(const string&);
void print(double);
void foobar(int ival)
{
extern void print(int &);
print("hello,world!") ;// error
print(i); //ok
}
using 声明可以制造一个更大的域范围,该范围内的函数支持重载
3 extern “C" 引用的C函数可以同C++函数重载,但是不能extern ”c“ 两个重载的函数,C编译器不支持函数重载。
4 重载函数的细节,暂时没有兴趣关注。
5 函数模板中的类型参数和非类型参数:
模板非类型参数表示该参数名代表一个潜在的值,模板函数使用的一个常量,而模板实例化的过程中会自动传入这个费类型的参数,这个是编译器自动完成的。
比如:
template <typename Tyte, int size>
type min((const Type(&array)[size])
{
Type min_val = array[0];
for(int i = 1;i<size;i++)
if(array[i]<min_val)
min_val = array[i];
return min_val;
}
6 显式模板实参
显示制定模板参数类型,放弃系统自动推导(避免麻烦和错误)
考虑如下情况:
template <class T> T min(T,T) { ...............}
int main()
{
unsigned int ui;
....
min(ui,1024); //错误T只能绑定在一个类型上,或者unsigned int 或者int
}
解决办法是显式制定模板实参类型,比如 min<unsigned int>(ui,1024)
7 模板编译模式:
包含编译模式:
模板定义在头文件中,包含模板的实现
分离编译模式:
仅包含模板的声明,模板的实现放在C中使用exprot,比如:
exprot template<typename Type>
模板实例化的细节,目前没有兴趣关注了。
相关文章推荐
- Linux Enterprise Cluster Notes -- Ch10 build a Linux cluster
- ch10_ex42&nbsp;序列的&quot;中值记录&quot;…
- Web前端-HeadFirst-笔记-Ch10-层叠与特定性计算
- essential linux device drivers ch10
- ch10_ex43&nbsp;c[i]记录比a[i]关…
- Web前端-HeadFirst-笔记-CH10-子孙选择器
- Java how to program(4th)中的专业词汇ch10
- ch10.表达式语言
- Web前端-HeadFirst-笔记-CH10-简写vs长形式
- Matlab DIP(瓦)ch10图像分割练习
- ch10_2_1利用频率变换法生成一个2-D滤波器.m
- C++PrimerV5/Ch10/ex10.1-
- Intel芯片组,南桥芯片ICH7、ICH8、ICH9、CH10
- ch10_2_2频率采样法.m
- 2017-2018-1 20155331 课下测试(ch10)
- 《Hadoop The Definitive Guide》ch10 Administering Hadoop
- ch10_2_3窗口法.m
- 20155211课下测试ch10补交
- California Mathmetics-G6-Ch10
- ch10_2_4.m