非const对象可以访问所有的成员函数、变量;const对象除了不能访问非const成员函数外,其它都可以访问。
class Name
{
public:
Name():i(10)
{
m_sName = (char *)malloc(16);
}
~Name()
{
if(m_sName)
{
free(m_sName);
m_sName = NULL;
}
}
void setName(const string &s) const
{
//m_sName = s.c_str(); // 错误!不能修改m_sName;
for (unsigned int i = 0; i < s.size(); ++i)
{
m_sName[i] = s[i]; // 不好的风格,但不是错误的
}
}
char* get()
{
int j;
j = i;
return m_sName;
}
char* get() const
{
int j;
j = i;
return m_sName;
}
void func()
{
int j;
j = i;
}
//private:
char *m_sName;
const int i;
};
void main(void)
{
char *pc;
Name name1;
const Name name2;
//非const对象访问权限
pc = name1.get();
name1.setName("hello");
name1.func();
name1.i;
name1.m_sName;
//const对象访问权限
pc = name2.get();
name2.setName("word");
name2.i;
name2.m_sName;
//name2.func(); //const对象不能访问非const成员函数
}



