函数

本文深入探讨了C++中内联函数的使用,引用变量的概念及其与指针的区别,以及函数重载和模版的详细解析。通过实例讲解,帮助读者理解这些高级特性如何提升代码效率和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内联函数

inline double square(double x) { return x*x; }

在函数定义/声明前加上inline。

引用变量

创建引用变量
int a;
int & b = a;

a和b指向相同的指和内存单元。

int a = 1;
int & b = a;//引用
int *c = a;//指针

引用与指针的相同点:
都可以通过b*c来访问和修改变量
引用与指针的不同点:

  1. 引用必须在声明时就初始化,而指针可以先声明再赋值
  2. 在引用初始化后,就与改变量关联起来,无法通过赋值来改变
int a = 1;
int & b = a;
int c = 2;
b = c;

b = c 实际上等价于a = c。并且b的地址仍和a的地址相同。

函数重载

函数特征表,即参数的数目和类型相同。

double cube(double x);
double cube(double & x);

这两个函数的特征表不同。
当调用函数cube(x)时,分不清是否时按引用传递。

long g(int, float);
double g(int float);

C++不允许这种重载。是否重载取决于特征标,而不是返回值。

函数模版

定义模版
template <class Any>
void Swap(Any &a, Any &b);
重载模版
template <class Any>
void Swap(Any &a, Any &b);
template <class Any>
void Swap(Any *a, Any *b, int n);
显示具体化
//非模版函数
void Swap(job &, job &);//job为结构体
//模版函数
template <class Any>
void Swap(Any &, Any &);
//显示具体化
template <> void Swap<job>(job & , job &)

在匹配函数原型时,优先级为:非模版函数 > 模版函数 > 显示具体化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值