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"); }