常量引用是什么意思,比如有一个类p,然后一个函数int f(const & p),这个函数是p的成员函数,要怎么调用他,函数体的形参怎么写。求解释谢谢啦
求大神给举个例子真心谢谢了
常量引用主要是用来表明函数的行为,就是这个参数是引用,而且是常量的,函数内部应该不会对这个引用的对象进行修改处理。只是只读的操作
class P {
public:
int fun(const int& tmp) {
cout<<tmp<<endl;
}
};
调用:
P* p = new P();
int a = 4;
p->fun(a); //第一种调用
const int b = 5;
p->fun(b); //第二种调用
注意不能在fun方法中去改变tmp的值, 因为它是const属性
我觉得你说的应该是类的实例p,还没听说过直接传类的引用的。
传实例本身的话,成员函数默认有this指针,不必用引用的形式,至于const可以这样来写:
class P {
public:
int fun()const {
。。。。。。
return 0;
}
};
如果你是想实现某种多态的话,这个函数起码得是虚函数,所以确实没怎么看懂你的意思。
取引用是为了加快程序运行速度,这样就不用将实参拷贝给行参。但是,引用的话可能会改变实参值,所以在前面加上const防止写函数时修改实参值。
用起来是一样的,加上常亮的引用就是不用拷贝,并且不用在函数里面修改,只能读取常实参值。
class Mystring
{
private:
char *str;
int length;
public:
Mystring()
{
length = 0;
str = new char(length);
str = NULL;
}
Mystring(const char *arr)//
{
length = strlen(str);
str = new char[length];
strcpy(str, arr);
}
Mystring(const Mystring &s)
{
str = new char[s.length];
length = s.length;
strcpy(str, s.str);
}
Mystring &operator=(const Mystring &s)
{
if (this == &s)
return *this;
Mystring strtemp(s);
char *ptemp = strtemp.str;
strtemp.str = str;
str = ptemp;
return *this;
}
~Mystring()
{
delete str;
}
};