关于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; 很详细啊~/:16 这些都是后人的财富呀... 继续抄袭.. O(∩_∩)O~
/******************************************************************
*
* 本楼出租广告, 有意者站内短信联系!!!!!!!!!!!!!
*
*
******************************************************************/
页:
[1]