美文网首页
C++入坑记(2)

C++入坑记(2)

作者: yeshan333 | 来源:发表于2018-10-06 20:44 被阅读4次

一般函数

在C++中,允许在自定义函数的形参列表中,给形参一个默认的值,这样在调用的时候如果有实参,那么按照实参传递给形参的方法使用;若调用的时候没有指定对应的实参,则形参将使用默认值。
由于参数的传递顺序是从右至左入栈,所以有默认值的参数必须在放在形参列表的最右边!

#include<iostream>
using namespace std;
int Sum(int a=4,int b=5)
{
    return a+b;
}
int main()
{
    cout<<Sum(5,7)<<endl;
    cout<<Sum()<<endl;
    cout<<Sum(9)<<endl;
    return 0;
}
image

函数重载

函数重载即两个或以上的函数,函数名相同,但形参类型或个数不同,编译器根据调用方传入的参数的类型和个数,自动选择最适合的一个函数来进行绑定调用,自动实现选择。

#include<iostream>
using namespace std;
int sum(int a,int b)
{
    return a+b;
}

double sum(double a,double b)
{
    return a+b;
}

double sum(double a,int b)
{
    return a+b;
}

double sum(int a,double b)
{
    return a+b;
}

int main()
{
    cout<<sum(1,2)<<endl;
    cout<<sum(1.414,2.526)<<endl;
    cout<<sum(3.14,6)<<endl;
    cout<<sum(8,9.9)<<endl;
    return 0;
}
image

函数模板(template)

模板是创建泛型类或函数的蓝图或公式。是泛型编程的基础。
函数模板,是可以创建一个通用的函数,可以支持多种形参。用关键字template来定义
模板函数定义的一般形式

template<class 类型名1,class 类型名2>
返回值 函数名(形参列表)
{
    函数体
}
#include<iostream>
using namespace std;
template<class T1,class T2>
T1 sum(T1 a,T2 b)
//模板函数中的T1和T2类型将根据实际传入的类型变成具体类型。这个化成就叫做模板的实例化。
//T1、T2是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。 
{
    cout<<sizeof(T1)<<","<<sizeof(T2)<<"\t";
    return a+b;
}
int main()
{
    cout<<sum(1,2)<<endl;
    cout<<sum(3.14,1.414)<<endl;
    cout<<sum('A',2)<<endl;
    return 0;
}
image

inline内联函数

  • 内联函数的基本思想在于将每个函数调用都以它的代码体来替换
  • 内联函数减少了不必要的函数栈帧的开销,节约内存
  • 内联函数以空间换取了时间,但是inline对编译器只是一个建议,如果定义的函数体内有循环或递归等,编译器优化时会自动忽略掉内联
#include<iostream>
using namespace std;
  
inline int Max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    cout<<Max(3,5)<<endl;
    cout<<Max(7,9)<<endl;
    return 0;
}

内联函数的定义要在调用之前出现

相关文章

  • C++入坑记(2)

    一般函数 在C++中,允许在自定义函数的形参列表中,给形参一个默认的值,这样在调用的时候如果有实参,那么按照实参传...

  • C++入坑记

    C++关键字 https://www.runoob.com/w3cnote/cpp-keyword-intro.h...

  • C++入坑记(3)

    变量初始化问题 当局部变量被定义时,系统不会自动对其初始化;当全局变量被定义时,系统会初始化为下列值: C++储存...

  • Moya:入坑记

    Moya:入坑记

  • 入坑记

    (一) 叮咚,手机屏幕上弹出一条推送:2018年区块链高峰论坛今天在杭州开幕,出席会议的嘉宾有…… 小东看了一眼手...

  • 入坑记

    引言 初入前端一年多,慢慢也有了属于自己的编码风格,但是目前也有很多地方值得去学习,虽然之前有很多问题都是来简书上...

  • 入坑记

    你们有没有因为一句台词去看一本书,或者因为一个镜头去追一部剧,我最近因为“小三爷,潘子我没力气说别的话了,最后在为...

  • 入坑记

    昨天带小朋友们去一个亲子乐园玩,广告上看上去美仑美奂,项目多多,哪知到了那里之后,门庭冷落,满目萧条,门票却不便宜...

  • C++小入坑

    一门中级语言,具有面向过程,面向对象的编程范式。扩展名为cpp hello world 使用g++编译一个C++程...

  • 入坑(2)

    老王辞职前也做了一些准备,毕竟老王不是一个人,他还有老婆,孩子,还有父母!他得征得她们同意,最少也得跟她们打个招呼...

网友评论

      本文标题:C++入坑记(2)

      本文链接:https://www.haomeiwen.com/subject/qzzhaftx.html