飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1923|回复: 2

[C/C++] 关于const关键字及其引发的重载

[复制链接]

该用户从未签到

发表于 2010-1-18 01:22:31 | 显示全部楼层 |阅读模式
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;
PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-4-18 16:56
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-1-19 21:12:24 | 显示全部楼层
    很详细啊~/:16
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-8-23 14:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-1-26 22:22:04 | 显示全部楼层
    这些都是后人的财富呀... 继续抄袭.. O(∩_∩)O~

    /******************************************************************
    *  
    *    本楼出租广告, 有意者站内短信联系!!!!!!!!!!!!!
    *
    *
    ******************************************************************/
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表