成员函数默认参数
来源:互联网 发布:淘宝尾款什么时候付 编辑:程序博客网 时间:2024/05/21 09:29
http://m.blog.csdn.net/blog/sailor_8318/3348360#如何在类成员函数中默认引用类成员?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);}};引用必有初始值,且不能为Nullclass 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;}
0 0
- 成员函数默认参数
- c++成员函数默认参数
- 成员变量作为成员函数的默认参数
- c++作业,带默认参数的成员函数
- 默认内联成员函数
- C++默认成员函数
- C/C++笔试系列--如何利用成员变量作为成员函数的默认参数
- 为什么不能使用成员变量的值作为成员函数的默认参数?
- 成员模板函数不能为虚函数,同时也不能有默认参数
- 类默认的成员函数
- C++默认成员函数使用说明
- 类的默认成员函数
- 类的默认成员函数
- 类的默认成员函数
- 类的默认成员函数
- 函数重载 / 默认参数
- 函数的默认参数
- 函数的默认参数
- ArcGIS for Android 之callout初级实现
- C# out ref用法 解决返回多个值问题
- mongodb shell 插入
- android相机中的人脸检测注意
- 接口类和类实例的比较
- 成员函数默认参数
- 在Android系统上安装linux发行版
- java http get post请求 https请求实现
- Zabbix Agent的安装详解
- commons-io.jar实现文件的拷贝并且命名
- 百度地图添加marker并获取InfoWindow里面的内容,实现marker的增加、删除、编辑
- mac重新初始化
- [BZOJ1029]JSOI2007 建筑抢修|贪心|堆
- ANSI、Unicode、UTF-8、DBCS等字符集及相关数据类型、函数的区别