【问题标题】:parameters r=0 , i=0 in a constructor参数r = 0,i = 0在构造函数中
【发布时间】:2022-01-26 08:09:18
【问题描述】:

所以我刚刚学习了 oops 中的多态性,我在一个添加复数的程序中学习了运算符重载; 所以有这个类,它是构造函数,但构造函数就像

complex(int r=0 , i=0){...}

我的问题是 r=0 作为参数是什么意思? 我的猜测是,当我在创建对象时没有在构造函数中传递值时,程序会将 0 作为默认值;

如果是这样,那么我可以对正常功能做同样的事情吗?

【问题讨论】:

  • 你猜对了。你的问题的答案是肯定的。请注意,您只能为最后 N 个参数定义默认值(例如,在您的情况下,您不能为 r 定义默认值,而不能同时为 i 定义默认值)。
  • @bbbbbbbbb 所以你的意思是说我只能为所有参数定义默认值,而不能为某些参数定义默认值
  • 不,您可以为一些定义默认值,只要它们是最后一个。例如,在您的情况下,您只能为 i 定义默认值。但是您不能只为r 定义默认值。
  • @bbbbbbbb 哦!好的,非常感谢
  • 不客气。

标签: c++ c++11


【解决方案1】:

构造函数的两种主要类型是默认构造函数和参数化构造函数。实际上这是default constructor 的一个例子。默认构造函数不会有任何参数,或者它可能包含具有默认值的参数。

并且构造函数是类的没有返回类型的函数,在创建类的新对象时执行。所以你当然可以对函数做同样的事情。

void maxnumber(int i=0,int j=0){
   cout<< max(i,j);
}

所以上面的无返回类型函数可以像下面这样调用:

maxnumber();
maxnumber(0,0);
maxnumber(10,20);

【讨论】:

  • 您缺少一个典型的用例,即您只指定一个参数,例如:maxnumber(5),其中 i=0 和 j=5。
  • 好吧。如果 i=0 和 j=5 在默认构造函数中被初始化,那么调用 maxnumber(5) 将初始化 assign i=5 并且 j 将保持不变。而maxnumber(0,5) 将分配 j = 5 和 i = 0。
猜你喜欢
  • 2012-03-25
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多