c/c++:const修饰函数

File : const_decoration.cpp
Type : c/c++
Brief : const decoration


#include <iostream>
using namespace std;
class constTest
{
public:
    constTest(int x):data(x){}
    ~constTest(){}
    
    int set1(const int& n)
    {
        //n++;                  //error
        data = n;
        data ++;                //ok
    }
    
    int get1() const 
    {
        return data;
        //return data++;        //error
    }
    
    int get2()
    {
        return data++;          //ok
    }

    int& get3()                 //用于修改data
    {
        return data;
    }

    const int& get4() const     //用于const constTest访问data,但不能修改data
    {
        return data;
    }
    
private:
    int data;
};


int main()
{
    cout << "test const" << endl;
    
    // const 与函数
    constTest aa(10);
    int bb;
    bb = aa.get2();
    
    cout << aa.get1() << endl;
    aa.get2();
    cout << aa.get2() << endl;

    int m = 0,n = 0;
    // const 与指针
    const int *a;       // const 修饰*a,*a不能改
    int const *a;       // 与上面写法等价
    //*a = 100;         // error
    a = &m;             // ok
    
    int* const b = &m;  // const 修饰 b,b不能改
    *b = 100;           // ok
    //b = &n;           // error
    
    // const 与常量
    const int c = 0;
    int const d = 0;    //两种写法等价,const 与 int 在前在后是一样的,换成 *c *d 也是一样的
    
    return 0;
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:c/c++:const修饰函数

本文作者:Y

发布时间:2017-08-09, 13:22:04

最后更新:2019-05-21, 20:06:10

原始链接:http://yehuohan.github.io/2017/08/09/Gist/c&c++/const-decoration/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。