如果C++的成员函数有默认参数列表 如何声明,执行?

例如Clear(GLbitfieldmask=GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT){glClear(GL_COLOR_BUFF... 例如
Clear(GLbitfield mask = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
};
如果上面函数是成员函数怎么写cpp文件和头文件?
展开
 我来答
百度网友4327fcbb9b
推荐于2016-03-22 · 知道合伙人教育行家
百度网友4327fcbb9b
知道合伙人教育行家
采纳数:26426 获赞数:292057
从师范学校毕业后一直在现在单位工作

向TA提问 私信TA
展开全部
成员函数参数的默认值是在声明里赋,还是在定义里。
class CAbc
{
public:
static int m_abc;
CAbc(){}
static void set(int abc);

int fn(int a,int b=0,int c=5);
//int fn(int a,int b,int c);
};

void CAbc::set(int abc)
{
m_abc=abc;
}

//int CAbc::fn(int a,int b=0,int c=5)
//redefinition of default parameter : parameter 3
int CAbc::fn(int a,int b,int c)
{
cout<<a << b << c << endl;
return a;
}

int CAbc::m_abc=1000;
int main(int argc, char* argv[])
{
CAbc a;
a.fn(6);
a.set(10);
return 0;
}
声明是用户可以看到的部分,客户非常信任地使用这个特性,希望得到一定的结果,但是你在实现里使用了不同的缺省值,那么将是灾难性的。因此编译器禁止声明和定义时同时定义缺省参数值。
类的成员函数的参数表在声明时默认参数位于参数表右部,如int fn(int a,int b=0,int c=5)之类的,但在它定义的时候则不能加默认参数,只能写int fn(int a,int b,int c);
若声明时没有定义缺省参数值,那么在定义成员函数时可以定义缺省参数值。但这种情况通常用户是看不见的,因此应避免。
对于非类中的函数,在函数声明中定义默认参数的另外一个好处时,可以利用声明来随意更改默认参数的值。

//int fglobal(int a,int b=2,int c=5)
//redefinition of default parameter : parameter 3
int fglobal(int a,int b,int c)
{
cout<<a << b <<c<< endl;
return a;
}

int fglobal(int a,int b=2,int c=5); // 全局的申明

int CAbc::m_abc=1000;
int main(int argc, char* argv[])
{
CAbc a;
a.fn();
//fglobal(); //此时用的全局申明,无第一个参数不行
fglobal(1);
int fglobal(int a=2,int b=3,int c=5); // 局部的申明,不管上述默认参数是在定义还是申明中
fglobal();
::fglobal(3); // 此时将采用全局申明
return 0;
}
//205
//125
//235
//325
}
实践证明,缺省参数可以在定义中,也可以在声明中,只要全局的声明和定义中只有一个带参数即可。
局部的声明中可以随便改变默认参数(不管上述默认参数是在定义中还是在声明中)。在下一次改变之前,此参数将一直生效,并将覆盖全局的申明。若要使用全局的声明默认参数,可以加“::”

http://blog.csdn.net/sailor_8318/article/details/3348383
liyanghenan
推荐于2017-11-22 · TA获得超过184个赞
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部
在头文件(类的定义)中设参数默认值,在cpp文件(类的实现)中只使用参数,不设默认值(否则会报告重赋默认值错误)。在最终使用成员函数时即为带默认参数的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式