Nisy 发表于 2010-1-18 01:22:31

关于const关键字及其引发的重载

class Test{
public:
        int m_i;
        //const Test& SetTest(int a) const {return * this;}//这样是OK的单因为返回类型不一样是不能重载的
        Test& SetTest(int a) const
        {
                //m_i = a;
                return *(Test*)this;
                // 不可以是 Test* const也不可以是 const Test*
        }
        // 一旦添加了 const 标示 类内this指针 就为 const class * const 类型

};


//////////////////////////////////////////////////////////////////////////
// SoHard 类
//////////////////////////////////////////////////////////////////////////

class SoHard{
public:
        mutable int m_i;
        //const
        const SoHard& GetData(int& a) const
        {
                return * this;
        }
        //这样是OK的
        SoHard& GetData(int a) const
        {
                m_i = a;
                return *(SoHard *)this;
                // 不可以是 hdd * const也不可以是 const hdd *
        }
        // 一旦添加了 const 标示 类内this指针 就为 const class * const 类型
};

//////////////////////////////////////////////////////////////////////////
// const 定义的指针
//////////////////////////////////////////////////////////////////////////

const class * this;不可以修改 * this// 等同于 class const * this;
class * const this;不可以修改   this// 注意这里不要写成 class const * this 虽可以编译 但是不好理解

或者可以理解为 const (*this) 和 * const this


SoHard const * p= NULL;   // 这里可以不必赋予初始值
//p 可以被修改 *p 不能被修改
p = &m_hdd;
//p->m_i = 10;// 这里无法赋值

SoHard* const p1 = &m_hdd;// 必须要赋予初始值
//p 不能被修改 *p 可以被修改
//p1 = &m_hdd;// 这里无法赋值
p1->m_i = 10;

besterChen 发表于 2010-1-19 21:12:24

很详细啊~/:16

MeowCat 发表于 2010-1-26 22:22:04

这些都是后人的财富呀... 继续抄袭.. O(∩_∩)O~

/******************************************************************
*
*    本楼出租广告, 有意者站内短信联系!!!!!!!!!!!!!
*
*
******************************************************************/
页: [1]
查看完整版本: 关于const关键字及其引发的重载