c++中的const函数

const变量的基础:(这里给出一个小例子)

const *p://*p不可以改


int *const p;//p不可以改


const int *const p//二者都不可以改

正文:

在C++中,只有被声明为const的成员函数才能被一个const类对象调用。

        要声明一个const类型的类成员函数,只需要在成员函数参数列表后加上关键字const,例如,

class Screen {  
public:  
   char get() const;  
};  

      在类体之外定义const成员函数时,还必须加上const关键字,例如  

char Screen::get() const {  
   return _screen[_cursor];  
}  

   若将成员成员函数声明为const,则该函数不允许修改类的数据成员。例如,

class Screen {  
public:
    int a;
public:  
 Screen()
{
    a=0;
}
void ok() const 
{
    a=1;//错误
 }  

};  

 下面的这个例子比较经典:

int a=0;
const int *p=&a;//把一个可以修改的变成不可以修改的----正确


const int b=100;
int *p=&b; //把一个不可以修改的变成可以修改了----错误

 总结:

1.const成员函数可访问const成员变量和普通成员变量,但不能修改任何变量。检查发生在编译时。

 普通函数可访问const成员变量,不可以修改。.(在访问的时候会自动转成const的)

(成员函数和变量之间都是可访问不可以修改)

2.const对象只能访问const成员函数,

(const对象只可访问const的,也只可以被const的访问)

3.const对象的成员变量不可以修改。

4.const成员函数不能调用非const成员函数,因为非const成员函数可以会修改成员变量

5.普通成员函数可以访问非const对象的普通数据成员、const数据成员,但不可以访问const对象的任意数据成员。(除了此点外,普通的都可以访问const的)

6.const成员函数只是用于非静态成员函数,不能用于静态成员函数。

7.const成员函数的const修饰不仅在函数声明中要加(包括内联函数),在类外定义出也要加。

8.作为一种良好的编程风格,在声明一个成员函数时,若该成员函数并不对数据成员进行修改操作,应尽可能将该成员函数声明为const 成员函数。

参考资料:

https://www.cnblogs.com/shenckicc/p/6847103.html

https://www.cnblogs.com/myseasky/p/7458064.html

原文地址:https://www.cnblogs.com/curo0119/p/8534299.html