c++实用技巧两则
来源:百度文库 编辑:神马文学网 时间:2024/05/03 04:27:33
C++实用技巧两则
在准标准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以及typedef PF也定义了缺省的变量值。根据C++标准,这是不规范的。
这一代码的实际使用中,其中的一个问题是这些声明中提供的缺省值与A::func()和g()函数提供的值不一致。也就是说,很多编译器将这些代码作为非标准的扩展。当调用g()函数时,我的编译将120作为pf的缺省值;然而,对于pf2,它使用100作为它的缺省值。
作为一种规则,应该避免使用指向函数的指针,成员函数的指针,以及typedef命名的缺省变量值。即使你的编译器接受了它们,在更高版本中它也可能不被接受。而且,这些代码也会降低程序的灵巧性,也会给那些无法判别哪些编译器接收何种缺省变量的开发人员带来误导。在使用这些缺省变量值的合法代码中,我的建议是添加一些必要的注释,以说明需要哪些缺省变量值。
在准标准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以及typedef PF也定义了缺省的变量值。根据C++标准,这是不规范的。
这一代码的实际使用中,其中的一个问题是这些声明中提供的缺省值与A::func()和g()函数提供的值不一致。也就是说,很多编译器将这些代码作为非标准的扩展。当调用g()函数时,我的编译将120作为pf的缺省值;然而,对于pf2,它使用100作为它的缺省值。
作为一种规则,应该避免使用指向函数的指针,成员函数的指针,以及typedef命名的缺省变量值。即使你的编译器接受了它们,在更高版本中它也可能不被接受。而且,这些代码也会降低程序的灵巧性,也会给那些无法判别哪些编译器接收何种缺省变量的开发人员带来误导。在使用这些缺省变量值的合法代码中,我的建议是添加一些必要的注释,以说明需要哪些缺省变量值。
c++实用技巧两则
c++实用技巧两则
实用技巧:两步去除图片背景
Excel实用技巧九则
实用技巧
从两道经典试题谈C/C 中联合体
读书的两种状态C
两句话,让你远离颈椎病c
Windows Vista操作系统实用技巧八则
微软Office Excel实用技巧五则
EXCEL几则快速操作实用技巧分享
Windows Vista操作系统实用技巧8则
办公室文件打印实用技巧三则
电脑应用高级实用技巧十二则
办公室文件打印实用技巧三则
实用技巧:两招恢复丢失的QQ好友-实用 技巧 恢复 QQ-软件之家
联通确定C、G两网负责人 曾为竞争对手
女人美丽两关键:养血与通便c
事业婚姻两得意的星座女c
实用技巧 Linux系统的经典使用技巧八则
减少启动时间 Win XP实用技巧八则
“盗”亦有道 QQ农场偷菜实用技巧十则
节约成本 打印Excel表格的实用技巧三则
微软Office Excel实用技巧五则 (12-12-10)