重载函数和默认参数的函数

代码说事

重载的参数匹配

 1 /// *重载的匹配顺序   1: 严格匹配      2: 转换匹配
 2 /// *重申 :  重载的判断依据  !形参的!  个数   类型   位置
 3 /// * 返回值类型不作为重载依据
 4 /// * 默认参数 不能用于区分重载函数
 5
 6 #include <bits/stdc++.h>
 7 using namespace std;
 8
 9 ///  转换  的匹配
10 double b;
11 void print(int a);
12 void print(char c);
13 //void print(double b);     ///double b can‘t match print(int a) ;  it present wrong
14                             ///  so,  转换匹配最好不要出现
15
16 //int print(double b);      ///即使这句都会引起  报错
17                             // ambiguating new declaration of ‘void print(double)‘
18
19 //double print(double b)    ///it present wrong
20                             ///so 返回值类型不能作为重载依据  产生二义性导致匹配失败
21 /*{
22    cout<<"double‘s print double  b is "<<b<<endl;
23 }*/
24 void print(int a)
25 {
26     cout<<"int a is "<<a<<endl;
27 }
28
29 void print(double b)
30 {
31     cout<<"double b is "<<b<<endl;
32 }
33 int main()
34 {
35     b=3.1415926;
36     print(b);
37     return 0;
38 }

默认参数的匹配

///据说 默认参数函数
///若同时声明和定义 则不允许出现默认参数
/// 就是同时出现  void print();  and  void print(){ ;}  //wrong

#include <bits/stdc++.h>
using namespace std;
//void print(int a=10);   // that‘s true what we say at the top;
void print(int a=10)        //只有这一个 才能 默认 参数值
{
    cout<<a<<endl;
}

int main()
{
    print();  ///这样竟然输出了 10!
    return 0;
}

  默认参数的顺序匹配

 1 ///据说  默认参数只能从右向左逐渐定义  调用参数时 从左向右匹配
 2 ///       *我猜这是因为 右面的参数需要重新传值的概率比较低把
 3
 4 /// 默认参数不能区分重载函数
 5 ///     形参的个数  类型  位置
 6 #include <bits/stdc++.h>
 7 using namespace std;
 8
 9
10 ///当某些类的初始化  一些变量的变化不太频繁时 可以用默认参数简化重载函数
11 print(string name  , string id , string school = "jlu")
12 {
13     cout<<name<<"   "<<id<<"   "<<school<<endl;
14 }
15
16
17 void print(int b,char c=‘P‘)
18 {
19     cout<<"int b and char c is "<<b<<"  "<<c<<endl;
20 }
21 ///默认参数只能从右向左逐渐定义
22 //void print(int b=1,char c)        //false
23 //{
24 //   cout<<"int b and char c is "<<b<<"  "<<c<<endl;
25 //}
26
27 /// 默认参数不能区分重载函数
28 /*void print(int b=2,char c=‘Q‘)    ///wrong
29 {
30     cout<<"int b and char c is "<<b<<"  "<<c<<endl;
31 }
32 */
33 int main()
34 {
35     //print();  wrong
36     print(3);//true
37     string name ="liuyang" , id = "55161027";
38     print(name,id);
39     return 0;
40 }

时间: 2024-08-10 07:18:37

重载函数和默认参数的函数的相关文章

PHP_零基础学php_3PHP函数、传参函数、默认参数、函数返回值

<?php function say_hello() //无参数 { $name="tang"; echo "hello,".$name; echo "<br />"; echo "<hr />"; } say_hello();//函数调用 function say_helloS($some_name)//有参数 { echo "hello,".$some_name; echo

C++函数:默认参数的函数

1.默认参数的目的 C++可以给函数定义默认参数值.通常,调用函数时,要为函数的每个参数给定对应的实参.例如: void delay(int loops); //函数声明 void delay(int loops) //函数定义 { if(100ps==0) return; for(int i=0;i<loops,i++); } 无论何时调用delay()函数,都必须给loops传一个值以确定时间.但有时需要用相同的实参反复调用delay()函数.C++可以给参数定义默认值.如果将delay(

内联函数、默认参数和函数占位参数

内联函数 定义:内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质.内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处.编译时,类似宏替换,使用函数体替换调用处的函数名.一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理. C++中的const常量可以替代宏常数定义,如: const int A = 3; ? #define A 3 C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!) C++

c++ 函数的默认参数

/** * @file test.cpp * @author chenjiashou([email protected]) * @date 2017/08/20 15:54:27 * @version $Revision$ * @brief * **/ #include <iostream> int print(int a = 1, int b = 2); int main() { print(); print(-1); return 0; } //int print(int a = 1, i

默认参数与函数重载

一.默认参数在C++中,可以为参数指定默认值.在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数. 默认参数的语法与使用:(1)在函数声明或定义时,直接对参数赋值.这就是默认参数:(2)在函数调用时,省略部分或全部参数.这时可以用默认参数来代替. 注意:(1)默认参数只可在函数声明中设定一次.只有在无函数声明时,才可以在函数定义中设定.(2)默认参数定义的顺序为自右到左.即如果一个参数设定了缺省值时,其左边的参数都要有缺省值.如:int mal(int a, int b=3, int

c++-内联函数和函数重载和默认参数和函数指针

内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数. 如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义.如果已定义的函数多于一行,编译器会忽略 inline 限定符. 在类定义中的定义的函数都是内联函数,即使没有使用 inline 说

没有躲过的坑--C++函数的默认参数(重新定义默认参数)

默认参数指的是当函数调用中省略了实参时,自动使用一个值. 这里首先需要注意的是: 对于带参数列表的函数,必须从右向左添加默认值. 也就是说,要为某个参数设置默认值,则必须为它右边的所有参数提供默认值. 今天遇到的坑儿,就是函数使用默认参数,并且函数的声明和定义是分开的. char* left(const char* str, int n=1); int main() { } char* left(const char* str, int n = 1)//错误 { } 上面代码可以有两种修改: 1

c++有默认参数的函数---4

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 1.默认参数的目的 C++可以给函数定义默认参数值.通常,调用函数时,要为函数的每个参数给定对应的实参.例如: void delay(int loops): //函数声明 void delay(int loops) //函数定义 { if(100ps==0) return: for(int i=0;i<loops,i++): } 无论何时调用delay()函数,都必须给loops传一个值以确定时间.但

默认参数的函数

1.默认参数的目的 C++可以给函数定义默认参数值.通常,调用函数时,要为函数的每个参数给定对应的实参.例如: void delay(int loops): //函数声明 void delay(int loops) //函数定义 { if(100ps==0) return: for(int i=0;i<loops,i++): } 无论何时调用delay()函数,都必须给loops传一个值以确定时间.但有时需要用相同的实参反复调用delay()函数.C++可以给参数定义默认值.如果将delay(