在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。
【C++|c++成员函数默认参数】默认参数的语法与使用:
(1)在【函数声明】或【定义】时,直接对参数赋值。这就是默认参数的两种方式;
但应该尽量在声明是定义默认参数【.h文件】这是给外部的借口。
或者有特殊要求,才在【.cpp文件】中定义
(2)在函数调用时,省略部分或全部参数。这时可以用默认参数来代替。
(3)默认参数应该从右向左
(4)需要注意虚函数,多态时候,default parametrs 问题,默认参数并不会“多态”。
编译期决定??
注意:
(1)默认参数只可在函数声明中设定一次。只有在没有函数声明时,才可以在函数定义中设定。(此句意为存在函数声明和定义两部分的时候。 定义或者声明只有一处)
(2)注意函数重载,防止二义性
c++成员函数默认参数 多文件编写注意
.h
#ifndefPARAMETER_H_
#definePARAMETER_H_class cabc
{
private:
char m_abc;
static int def;
public:
//error: invalid use of non-static data member 'cabc::m_abc'
//void print(char a=m_abc,char* str) const;
//error//void print(int a=5);
void print(char* str1,char* str=NULL);
void print(int i=def) const;
int add(int i=def);
cabc(char c='a');
int set_value(int i);
~cabc();
};
#endif
.cpp
#include
#include "parameters.h"
using std::cout;
using std::endl;
int cabc::def=100;
//缺省参数放在声明写
//ERROR:like the followed
/*void cabc::print(char a,char*) const //error
{
cout<<"m_abc="<
main.cpp
#include
using namespace std;
classRoot
{
public :
virtual void print(int arg=11)
{
cout<<"Root\n";
cout< print();
// do something
}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- C++|【C++】类型转换
- C++提高编程|2. STL初识
- 笔记|C++(继承和派生)
- c++|C++(从零开始,万字模拟实现string(超详细))
- 学习|C++ 练习3 [牛客]
- LeetCode高频面试题|LeetCode 416. 分割等和子集 【c++/java详细题解】
- LeetCode高频面试题|剑指 Offer 59 - I. 滑动窗口的最大值 【c++/java详细题解】
- LeetCode高频面试题|LeetCode 213. 打家劫舍 II【c++/java详细题解】
- C++入门