C++ 成员函数的参数问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 13:35:31
#include<iostream.h>
class MyClass
{
int m,n;
public:

void Set(int x,int y)/*如果是(int x=0,int y=0)也没有问题,关键是(int x=0,int y)就会报错,难道是成员函数必须都是实参或都是形参吗?*/
{
m = x;
n = y;
}

void print()
{
cout<<"m="<<m<<" n="<<n;

cout<<endl;
}
};
void main()
{
MyClass obj;
obj.Set(2,4);
obj.print();
}

不是你想的那样
这是C++语法问题,C++明确规定:默认参数必须是在最后的几个参数,倒序排列。意思就是如果有一个默认参数的话 它必须是最后一个参数,如果有两个的话,它们必须是最后一个和倒数第二个参数……

和实参形参什么的没关系,这是默认参数的知识。
如 燃烧的左眼 所说,有默认值的参数必须是参数列表中的最后几个,否则,像
void Set(int x=0,int y)这样的声明,Set(3)是什么意思呢,是Set(0,3),还是x=3,缺少了y呢。

void Set(int x=0,int y)
不会报错~~~