const、&在定义函数返回的作用及接收返回变量的类型

来源:互联网 发布:网络维护和通信课程 编辑:程序博客网 时间:2024/05/19 18:16

直接看示例代码:

int main(){    int &s1 = f.f1();     cout << s1 <<endl; //输出5    s1 = 20; //通过引用,改变了mszT    f.print(); //输出20    //int s1 = f.f1(); //语句成立,但无法通过s1改变mszT了    int &s3 = f.f3(); //语句报错,f3返回类型是const,所以接收的变量必须为const。    int const &s3 = f.f3(); // 正确    cout << s3 << endl; //输出 5    s3 = 20; // 语句报错,const类型无法改变        //const int s3 = f.f3(); //正确,但无法通过s3改变mszT了}class sz{public:    int &f1(){          mszT = 5;        return mszT;    }    int f2() const{        return mszT;    }    const int &f3(){        mszT = 5;        return mszT;    }    const int &f4()const{        return mszT;    }    void print(){        cout << mszT << endl;    }private:    int mszT;};

结论:通过上面的分析可以得出,int &f1(){}const int &f3()中的&使得返回一个引用,接收变量可以定义成相同类型的引用或非引用。如对于接收int &f1(){}的变量可以写成int &a = f1()int a = f1()。但返回引用的目的就是为了提高程序效率,因为这避免了复制到临时变量这个过程,所以最好把接收的变量也定义成引用。

有const时,接收变量必须定义成const类型,如对于const int &f3(){}的接收变量必须写成const int &b = f3()或不带&的const int b = f3()

当接收变量如果是引用且非const时,则可以改变引用的对象。如对int &f1(){}int &a = f1(),则改变a可以改变f1里面的内容。

阅读全文
0 0