zoukankan      html  css  js  c++  java
  • 函数末尾加入const的作用

    #include <iostream>
    
    using namespace std;
    
    class Test
    
    {
        int num;
    
    public:
    
        Test()
    
        {
            num=10;
    
        }
    
        void print1()
    
        {
            cout<<num<<endl;
    
        }
    
        void print2() const
    
        {
            cout<<num<<endl;
    
        }
    
        void print3() const
    
        {
            num-=10;//ERROR 1.const函数内部不能修改成员变量
    
            cout<<num<<endl;
    
        }
    
    };
    
    int main()
    
    {
        Test a;
    
        a.print1();
    
        a.print2();
    
        a.print3();
    
     
    
        const Test b;
    
        b.print1();//ERROR 2.const对象不能访问非const函数
    
        b.print2();
    
        b.print3();
    
        return 0;
    
    }
    

    示例代码有两处ERROR:

    1.const函数内部不能修改成员变量

    2.const对象不能访问非const函数

    那么,函数末尾加const的作用是什么?

    声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该放const关键字。

    任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。

    同样,如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性,一看就知道这个函数的大概功能。
    ————————————————
    版权声明:本文为CSDN博主「军说网事」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wujunokay/article/details/90720808

  • 相关阅读:
    手动卸载Office2010
    css盒子模型和定位
    [转]Mysql 存储过程和函数区别
    (转载)今天面试两个人的感受
    配置apache和php mysql的一些问题
    css position[转
    drools7 (四、FactHandle 介绍)
    drools7 (三、kmodule 介绍)
    drools7 (二、agenda-group 的使用)
    drools7 (一、最简单的例子)
  • 原文地址:https://www.cnblogs.com/sggggr/p/15684458.html
Copyright © 2011-2022 走看看