读书人

C++,类成员函数参数默认引用类成员的困

发布时间: 2012-02-16 21:30:36 作者: rapoo

C++高手请进,类成员函数参数默认引用类成员的困惑!!!!
//我想在类成员函数中默认引用类成员,编译器就是通不过,代码如下
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);
}
};

[解决办法]
引用必有初始值
[解决办法]
只有常量引用才可以初始化

[解决办法]
缺省参数值是静态绑定在静态类型上面的
[解决办法]
不要用引用,用指针
[解决办法]
不可以在普通成员函数里头使用普通的程序变量作为参数的默认值.因为这样,编译器无法确认函数的参数的默认值是多少,这个动态确定不行,只能静态确定.办法是把程序变量改成静态的,函数改成静态的
[解决办法]
真是很搞笑,引用正是用指针来实现的,传指针的引用所耗空间好转指针的拷贝完全相同。
[解决办法]
#include <stdio.h>
class CAbc
{
public:
static int m_abc;
CAbc(){}
static void set(int abc);
void fun(const int &p=m_abc)//±àÒë´íÎó
{
printf( "%d ",p);
}
};
void CAbc::set(int abc)
{
m_abc=abc;
}
int CAbc::m_abc=1000;
int main(int argc, char* argv[])
{
CAbc a;
a.set(10);
a.fun();
return 0;
}

读书人网 >C++

热点推荐