C++默认实参

文章讲述了C++中voidf函数的默认参数用法,强调了非模板类成员函数和模板类成员函数对默认参数的不同处理规则,并指出类外定义默认实参的错误以及C类中构造函数默认参数的不当使用。
摘要由CSDN通过智能技术生成
void f(int a = 3, int b = 4, int c = 5) {
  std::cout << a << " " << b << " " << c;
}

int main() {
  f(,1); //wrong
  f(1); //1 4 5
}

默认实参一般是在最右边void f(int a, int b = 1)类似这种结构,但是也存在例外,当该参数右边有默认实参的时候可以添加默认实参

void f(int a, int b = 2);
void f(int a = 1, int b);

对于非模板类的成员函数,类外的定义中允许出现默认实参,对于模板类的成员函数,所有的默认实参必须在成员函数的初始声明处提供

class C {
public:
  void f(int i = 1);
  void g(int i, int j = 9);
  C(int arg);
};

void C::f(int i = 1) {}
void C::g(int i = 8, int j) {}
C::C(int arg = 1) {}

C::f和C::C均有错误。f重定义了默认实参,而C通过添加默认实参将其变为默认构造函数,使得程序非良构

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值