在声明C 期间具有值的类方法的初始化参数
Initializing parameter of a class method with value during declaration C++
我正在处理另一个人C 代码,不明白他们为什么做某事。
他们有一个通知类,该类别具有称为Check的公共方法,该方法将时间用于参数
void check(unsigned long time = 1);
每次在代码中调用方法时,当前时间都传递给它。
notification1.check(currentTime);
我的问题是,当他们定义方法时,为什么它们给参数一个值?为什么不说
void check(unsigned long time);
这是因为如果在函数调用中没有参数,则默认参数值将用于 time
,在这种情况下为 1
。这称为默认参数
如果您调用check
函数并且不提供参数,则编译器将将1
的默认值分配给time
。如果您在调用check
函数时通过参数,则传递值将覆盖time
的默认值。
当一个函数传递给它的默认参数时,您不需要在调用该函数时传递参数,并且您可以根据需要指定尽可能多的默认参数。
您是否可以访问检查功能的实现?
由于函数声明中指定了默认参数,因此您也可以在没有参数的情况下调用它。(例如:notification1.check())您应该在以下每个方案中探索检查(...)函数的行为
- 用参数调用函数?(即notification1.check(currentime))?
- 函数呼叫没有参数?(即notification1.check())?
作为编码的最佳实践,必须记录这些行为的成员函数声明。如果不是这种情况,则必须探索实现。
这是一个默认参数。http://en.cppreference.com/w/cpp/language/default_arguments解释了您想了解的有关此C 功能的所有信息。
我的问题是,为什么在定义方法时会给参数一个值?
如果未使用默认参数 whice ,即,如果始终以非默认参数调用该函数,则很可能是一个错误的设计决定。也许他们认为当他们最初设计代码时,默认参数很有用,但是现在事实证明没有有用的默认值。也许他们认为将来的默认论点可能仍然有用。
事实上,1
是 unsigned long time
参数的可疑值,它看起来很像自1970年1月1日以来代表毫秒的值。为什么不0
?
- 在类中初始化 QHash
- c++ 中的异常类何时初始化?
- 类内初始化与构造函数初始化列表的顺序
- std::数组派生类聚合初始化
- 如何从静态类函数初始化静态类对象
- 从相同类型的静态成员进行类内初始化
- 为什么静态数据成员不能在c++11中的类中初始化
- C++11 默认类成员初始化与初始值设定项列表同时
- 继承的构造函数忽略类内初始化
- 在具有堆上成员的类内初始化类
- 使用每种类型的可变参数模板上的类模板初始化元组
- 如何在需要提及需要循环声明的其他类的类中初始化变量?
- 哪个函数负责C++全局范围内的类对象初始化?
- 如何根据构造函数参数使用超类类型初始化成员变量?
- 程序在没有输入的情况下退出,它有基本的,驱动的类属性初始化问题
- 使用静态方法初始化 const 类字段的做法是好是坏
- 是否可以使用自动类方法初始化自动变量?
- 指针类成员在通过类方法初始化后保持 NULL
- 为什么模板化类在初始化列表中识别另一个类的构造函数,但在方法主体中却不识别?
- 在类中初始化静态向量最方便的方法是什么?