c++ const相关

来源:互联网 发布:信捷plc模拟量编程实例 编辑:程序博客网 时间:2024/06/05 22:56
#include <iostream>
using namespace std;


class CTest
{
private:
    mutable int m_i32Access; // 关键字mutable只能修饰类的非静态和非常量数据成员
    bool m_bFlag;


public:
    CTest();


    // 指针、引用传递的参数可以用const重载,值传递的参数不行
    int Foo(int* pi32Data);
    int Foo(const int* pi32Data);


    // const函数也可以重载
    int Bar();
    int Bar() const;


    bool GetFlag() const; // 在const函数中也可以修改数据成员
};


CTest::CTest()
{
}


int CTest::Foo(int* pi32Data)
{
    cout << "Foo(int* pi32Data)" << endl;


    return 0;
}


int CTest::Foo(const int* pi32Data)
{
    cout << "Foo(const int* pi32Data)" << endl;


    return 0;
}


int CTest::Bar()
{
    cout << "Bar()" << endl;


    return 0;
}


int CTest::Bar() const
{
    cout << "Bar() const" << endl;


    return 0;
}


bool CTest::GetFlag() const
{
    cout << "GetFlag() const" << endl;


    m_i32Access++; // 因为该成员变量有mutable修饰,所以可以在const函数中修改
    return m_bFlag;
}


int main()
{
    const int i32Data1 = 5;
    int i32Data2 = 3;


    CTest oTest1;
    oTest1.Foo(&i32Data1);
    oTest1.Foo(&i32Data2);


    oTest1.Bar();


    const CTest oTest2;
    oTest2.Bar();
    oTest2.GetFlag();


    return 0;
}
原创粉丝点击