zoukankan      html  css  js  c++  java
  • 内建类型,与用户自定义类型,返回值为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");
         
    }
  • 相关阅读:
    2017-12 CDQZ集训(已完结)
    BZOJ1492 货币兑换 CDQ分治优化DP
    BZOJ2001 [Hnoi2010]City 城市建设 CDQ分治
    树套树小结
    跑路了
    NOI2020 游记
    半平面交模板
    Luogu 3245 大数
    Luogu 3246 序列
    test20190408(十二省联考)
  • 原文地址:https://www.cnblogs.com/cplinux/p/5581357.html
Copyright © 2011-2022 走看看