函数重载 只能通过范围和参数来区分。
const引用的问题,那就是非const首选是左值,const首选是右值.
#include<iostream>
using namespace std;
int foo(int& );
int foo(const int& );
int foo(int & i){
cout<<"int & i:"<<i<<endl;
return i;
}
int foo(const int & i){
cout<<"const int & i:"<<i<<endl;
return 0;
}
int main(int argc,char **argv)
{
int t=foo(1);//选择const int&
int t1=foo(t);//选择int&
}
如果上面的那个例子里面再加int foo(int),那么两个函数调用都将不能得到最好的匹配从而导致编译错误.
#include <iostream>
using namespace std;
class A{
A(int i);
A(int i,int j=0);
};
A::A(int i){
cout<<"i:"<<i<<endl;
}
A::A(int i,int j){
cout<<"i:"<<i<<"j:"<<j<<endl;
}
int main(int argc,char **argv){
A a(100);
return 0;
}
编译通不过!!!
t.cpp: In function `int main(int, char**)':
t.cpp:17: call of overloaded `A(int)' is ambiguous
t.cpp:5: candidates are: A::A(const A&) <near match>
t.cpp:13: A::A(int, int = 0)
t.cpp:10: A::A(int)
在使用缺省参数时必须记住两条规则。
第一条:只有参数列表后部参数才可是缺省的,也就是说,我们不可以在一个缺省参数后面又跟一个非缺省参数。
第二条:一旦使用了缺省参数,那么其后面的所有参数都必须是缺省的。
另外缺省参数只能放在函数声明中。
分享到:
相关推荐
总结起来,C++ 的函数重载与缺省参数特性提高了代码的可读性和可维护性。函数重载使得我们可以使用相同的函数名实现不同的功能,而缺省参数则允许我们在不改变函数调用语法的前提下增加函数的灵活性。在编写C++程序...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
在处理重载和缺省参数时,编译器的工作是至关重要的。它必须能够正确解析函数调用,即使是在库函数和用户自定义函数之间存在重载的情况下。因此,编译器需要遵循一定的规则来生成内部标识符,以避免不同编译器或链接...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
第五章(函数重载与缺省参数) 第六章(输入输出流介绍) 第七章(常量) 第八章(内联函数) 第九章(命名控制) 第十章(引用和拷贝构造函数) 第十一章(运算符重载) 第十二章(动态对象创建) 第十三章(继承与组合) 第十四章 ...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...