1、放在类成员函数最后

作用:[如果类的成员函数后面加了const关键字,说明这个函数是不能改变类中的成员变量的]

写法:

1
void A::f() <br><em id="__mceDel">void A::f() const                    ---算重载</em>

注意点:

当类中只有函数的const或非const版本存在的情况下:
非const对象可以调用const成员函数或非const成员函数;
const对象只能调用const成员函数,直接调用非const函数时编译器会报错;

 

当类中函数的两个重载版本都存在的情况下:
const对象默认调用const成员函数,非const对象默认调用非const成员函数;
若非const对象想调用const成员函数,则需显式转化,如((const A)a).fun();
若const对象想调用非const成员函数,同理const_cast<A&>(A).fun();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
class A{
public:
    int fun() const
    {
        return 1;
    }
 
    int fun()
    {
        return 2;
    }
 
    void display()
    {
        std::cout << fun() << std::endl;//默认调用了函数fun的非const版本
    }
};
 
int main() {
    A  a;
    const A  b;
 
    a.display();
    std::cout << ((const A&)a).fun() << std::endl;
    std::cout << const_cast<A&>(b).fun() << std::endl;
    return 0;
}

  

 

 

2、