C/C++笔试系列--如何利用成员变量作为成员函数的默认参数
来源:互联网 发布:淘宝管制刀具认定标准 编辑:程序博客网 时间:2024/05/16 02:11
经典C++笔试题解析7
--如何利用成员变量作为成员函数的默认参数
Sailor_forever sailing_9806@163.com 转载请注明
http://blog.csdn.net/sailor_8318/archive/2008/11/19/3337236.aspx
如何在类成员函数中默认引用类成员?
class CAbc;
class CAbc
{
private:
int m_abc;
public:
void fun0(int &p=NULL)//编译错误
{
printf("%d",p);
}
void fun1(const int &p=NULL)//编译通过
{
printf("%d",p);
}
void fun2(int &p=this->m_abc)//编译错误
{
printf("%d",p);
}
void fun3(const int &p=m_abc)//编译错误
{
printf("%d",p);
}
};
引用必有初始值,且不能为Null
class CAbc;
class CAbc
{
public:
int m_abc;
CAbc(){}
void set(int abc);
void fun( const int &p=m_abc) // const只是表示其为输入参数而已,可以去掉
{
printf("%d/n",p);
}
};
//提示: error C2648 将成员作为默认参数使用要求静态成员。
一个类中,为什么不能将数据成员做为成员函数的默认参数?
标准规定这么一个限制条件是有其理由的,非静态成员如果在成员函数被调用前没有被初始化,此时编译器无法确认函数参数的默认值是多少。而标准这样做就把错误的发现提前到编译期。
解决办法是将缺省参数值是静态绑定在静态类型成员上面。
以下代码通过了
class CAbc;
class CAbc
{
public:
static int m_abc;
CAbc(){}
void set(int abc);
void fun( const int &p=m_abc) // const只是表示其为输入参数而已,可以去掉
{
printf("%d/n",p);
}
};
void CAbc::set(int abc)
{
m_abc=abc;
}
int CAbc::m_abc=1000;
int main(int argc, char* argv[])
{
CAbc a;
a.fun();
a.set(10);
a.fun();
return 0;
}
- C/C++笔试系列--如何利用成员变量作为成员函数的默认参数
- 成员变量作为成员函数的默认参数
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- 为什么不能使用成员变量的值作为成员函数的默认参数?
- c语言结构体成员作为函数参数
- 【C/C++学院】0819-/类的成员函数与const-mutable /构造与析构/拷贝构造deletedefault以及深浅拷贝/静态成员函数成员变量类在内存的存储默认参数/友元类以及友元函数
- C/C++笔试系列--默认参数在哪指定?函数声明还是定义?
- 成员函数默认参数
- 【C/C++】成员变量
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 关于无默认构造函数的类的对象作为成员变量的问题
- 结构体变量及成员作为函数参数
- C/C++静态成员变量和静态成员函数
- 【C++】C++ static成员变量与static成员函数
- Linux
- VC下生成汇编代码的方法:
- 我会等
- bubble sort
- 五款常用mysql slow log分析工具的比较
- C/C++笔试系列--如何利用成员变量作为成员函数的默认参数
- 鸟哥系列Linux
- 数字转换人民币的类
- C/C++笔试系列--默认参数在哪指定?函数声明还是定义?
- JavaScript 学习笔记
- JAVA笔试面试专家“培”练营重磅出击
- Linux 的檔案屬性與目錄配置
- JQuery操作checkbox、radio等示例
- C语言中的枚举类型和在linux系统中的作用