c++ 函数声明后加const


一、函数后加const的意义

类的成员函数中,有一些是不改变类的成员变量的,也就是说,这些函数是"只读"函数。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。

实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。

  1. 非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)
  2. 表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中, 任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);
  3. 唯一的例外是对于mutable修饰的成员。 加了const的成员函数可以被非const对象和const对象调用 但不加const的成员函数只能被非const对象调用

char getData() const { return this->letter;}

二、const在函数前后的作用

  • 前面使用const 表示返回值为const

  • 后面加 const表示函数不可以修改class的成员

三、示例代码

// test1107.cpp : 定义控制台应用程序的入口点。
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class aa{
    int num;
public:
    aa(){
        int b =10;
        num = b;
    };
    void out1(){
        cout<<num<<endl;
    }
    void out2() const{
        cout<<num<<endl;
    }
    void out3() const{
        num+=10; //出错,const函数不能修改其数据成员
        cout<<num<<endl;
    }
 
};
int _tmain(int argc, _TCHAR* argv[])
{
    aa a1;
    a1.out1();
    a1.out2();
    a1.out3();
    const aa a2;
    a2.out1(); // 错误,const的成员 不能访问非const的函数
    a2.out2();
    a2.out3();
    return 0;
}

参考文献

函数声明后面的const用法
C\C++中函数后面加const

猜你喜欢

转载自blog.csdn.net/WHEgqing/article/details/105750958
今日推荐