之前的博客有写到c++通过函数修饰规则可以实现函数重装载,但使用的时候要注意不能产生调用歧义,比如下面这样
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Data
{
public :
void Init(int year = 2024, int month=6, int day=24)//全缺省
{
_year = year;
_month = month;
_day = day;
}
void Init()//无参
{
;
}
int _year;
int _month;
int _day;
};
int main()
{
Data data;
data.Init();//存在调用的二义性,error
cout << data._year << endl;
}
这是因为在调用data.Init();时,编译器不知道匹配无参还是全缺省函数,他俩都属于不传实参都可以调用的,所以再写代码时要避免两个函数都存在的情况