c++里常量引用的问题(函数)

常量引用是什么意思,比如有一个类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;
    }
};