内建类型,与用户自定义类型,返回值为const

1对内建类型来说,按值返回的是否为const,是无关紧要的,因为编译器已经不让它成为一个坐直,因为它总是一个值,而不是一个变量(thing in c++ page192)

2当处理用户自定义的类型时,按值返回常量是非常重要的,如果一个函数按值返回一个类对象为const时,那么这个返回值不能是一个左值(即它不能被复制,也不能调用非const函数)

#include<iostream>
#include<fstream>
using namespace std;

class X{
    int i;
public:
    X(int ii=0);
    void modify();
    void print()const;
};

X::X(int ii) :i(ii){

}

void X::modify(){
    i++;

}
void X::print()const{
    cout << "i=" << i << endl;
}

X f5(){
    return X();
}

const X f6(){

    return X(2);

}

void f7(X& x){

    x.modify();
}
int main(){

    f5() = X(1);
    f5().modify();
    //f6() = X(1);   不能被赋值
        //f6().modify(); 不能调用非const函数
    f6().print();//可以调用const函数

    system("pause");
     
}
原文地址:https://www.cnblogs.com/cplinux/p/5581357.html