初学者编程入门:C++学习实用技巧讲解

初学者编程入门:C++学习实用技巧讲解,第1张

初学者编程入门:C++学习实用技巧讲解,第2张

在准标准C++中,对默认变量值的限制非常模糊。基于此,许多编译器允许开发人员在函数声明、指向函数的指针和引用、指向成员函数的指针以及typedef声明中包含默认变量值。

请查看以下程序:

struct A
{
void func(int x = 5)
{
}
};
void g(int n = 12)
{
}
//根据C++标准,下面的声明中不能使用默认变量值。
void(* pf)(inti = 120);
void(A::* PMF)(int j = 50);
typedef void(* PF)(inti = 100);
//函数的引用
typedef void(& PRF)(inti = 100);
int main()
{
pf = g;
PF pf2 = g;
PMF = & A::func;
A A;
//这些调用中使用了哪些默认值?
pf();
pf2();
(a . * PMF)();
}
A::func()和G()有默认变量值是合理的。但是,指针pmf、pf和typedefPF也定义了默认变量值。按照C++标准,这是不标准的。

在这段代码的实际使用中,一个问题就是这些声明中提供的默认值与A::func()和g()函数提供的值不一致。也就是说,很多编译器将这些代码作为非标准扩展使用。调用g()函数时,我的编译取120作为pf的默认值;但是,对于pf2,它使用100作为默认值。

通常,您应该避免使用指向函数的指针、指向成员函数的指针以及由typedef命名的默认变量值。即使您的编译器接受它们,在以后的版本中也可能不被接受。而且这些代码还会降低程序的灵巧性,还会误导那些分不清哪些编译器接受哪些默认变量的开发者。在使用这些默认变量值的法律代码中,这里的建议是添加一些必要的注释来解释需要哪些默认变量值。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 初学者编程入门:C++学习实用技巧讲解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情