`
luckyclouds
  • 浏览: 109307 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

重载与缺省参数

    博客分类:
  • c++
阅读更多
函数重载 只能通过范围和参数来区分。

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++之第五函数重载与缺省参数c++之第五函数重载与缺省参数c++之第五函数重载与缺省参数c++之第五函数重载与缺省参数

    c++编程思想 内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++ 编程思想 象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    c++ 编程思想(中文)

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    thinking in C++ 英文版第二版

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++编程思想(Thinking In C++)

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++ 编程思想(完整版)

    第五章(函数重载与缺省参数) 第六章(输入输出流介绍) 第七章(常量) 第八章(内联函数) 第九章(命名控制) 第十章(引用和拷贝构造函数) 第十一章(运算符重载) 第十二章(动态对象创建) 第十三章(继承与组合) 第十四章 ...

    C++ 编程思想I 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除等

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    ThinkingC++

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++程序设计(非常经典的学习资料,上了工作岗位也用得着啊)

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    Thinking in C++

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++编程思想pdf

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++编程思想.rar

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    Thinking in C++ 高清PDF

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++ 编程思想 程序设计者的参考用书

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    Thinking in c++

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++编程思想最新版

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    ThinkingC++.rar

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

Global site tag (gtag.js) - Google Analytics