zoukankan      html  css  js  c++  java
  • void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?

     void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?
      const void fun(){};和void const fun(){};两个相同。
      如果采用"按址传递方式"的函数返回值加const 修饰,那么函数返回值(即地址)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。
      如果采用"按值传递方式"的函数返回值加const 修饰,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。
      所以不要尽量不要把int fun2();写成const int fun2(); 因为没意义。
      例:
    [csharp] view plaincopy
    #include<iostream>  
    using namespace std;  
    int num=10; //全局变量  
    const int *fun1(){ //按址传递  
    return &num; //返回地址  
    }  
    const int fun2(){ //按值传递 //最好直接写int fun2()  
    return num;  
    }  
    int main()  
    {  
    const int *fun1();  
      
    // int *t1=fun1(); //错误,必须是const型  
    const int *t1=fun1();  
    // *t1=20; //按址传递,不能修改其指向变量或常量的值  
    cout<<"const int *fun1() :	"<<*t1<<endl;  
    const int fun2(); //最好直接声明成int fun2()  
    int t2=fun2(); //非const变量可以更改函数返回值  
    const int t3=fun2();  
    t2 += 10; //按值传递,可以修改返回值  
    cout<<"const int fun2() :	"<<t2<<endl;  
    return 0;  
    } 
      void fun() const{};
      类的成员函数后面加 const,表明这个函数不可以对这个类对象的数据成员(准确地说是非static数据成员)作任何改变例:
    [csharp] view plaincopy
    #include<iostream>  
    using namespace std;  
    class R  
    {  
    public:  
    R():num1(1){}  
    int sum1(int a)const  
    {  
    // num1=10; //错误,不可以修改非static数据成员  
    return a+num1;  
    }  
    int sum2(int a)const  
    {  
    num2=2; //正确,修改static数据成员  
    return a+num2;  
      
    }  
    int sum3(int a) //没有const  
    {  
    num1=10; //正确,修改非static数据成员  
    num2=20; //正确,修改static数据成员  
    return a+num1+num2;  
    }  
    private:  
    int num1;  
    static int num2;  
    };  
    int R::num2=0;  
    int main()  
    {  
    cout<<"t.sum1(1):	"<<t.sum1(1)<<endl;  
    cout<<"t.sum2(1):	"<<t.sum2(1)<<endl;  
    cout<<"t.sum3(1):	"<<t.sum3(1)<<endl;  
    return 0;  
    }  

    http://bbs.csdn.net/topics/350148926

    http://bbs.csdn.net/topics/340217434

  • 相关阅读:
    Android中Context具体解释 ---- 你所不知道的Context
    JDK6、Oracle11g、Weblogic10 For Linux64Bit安装部署说明
    matplotlib 可视化 —— 定制 matplotlib
    matplotlib 可视化 —— 移动坐标轴(中心位置)
    matplotlib 可视化 —— 移动坐标轴(中心位置)
    matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)
    matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)
    指数函数的研究
    指数函数的研究
    指数分布的研究
  • 原文地址:https://www.cnblogs.com/timssd/p/4105392.html
Copyright © 2011-2022 走看看