哈尔滨行业网站建设策划,万网网站空间服务范围,做暧嗳网站,沈阳公司网站建设前言
常函数
成员函数后加 const 我们可以称这个函数为 常函数 常函数内不可以修改成员属性 成员属性声明时加关键字 mutable 后#xff0c;在常函数中依然可以修改
常对象
常对象 声明对象前加 const 称该对象为常对象 常对象只能调用常函数
正文
常函数
class Person…前言
常函数
成员函数后加 const 我们可以称这个函数为 常函数 常函数内不可以修改成员属性 成员属性声明时加关键字 mutable 后在常函数中依然可以修改
常对象
常对象 声明对象前加 const 称该对象为常对象 常对象只能调用常函数
正文
常函数
class Person
{
public:// this 指针的本质是 指针常量 指针的指向是不可以修改的void showPerson() const {m_A 10;}int m_A;
};看看上面的代码 常函数 是不可以修改里面的值 加了 const 以后 这个函数里面 this 指针从 Person * const this 变成了 const Person * const this 又因为 m_A 等价于 this-m_A , 所以 m_A 不是可以修改的左值 怎么修改呢 使用 mutable 修饰成员变量以允许在 const 成员函数内修改它
class Person
{
public:void showPerson() const {m_A 10; // 在 const 成员函数内部修改成员变量因为 m_A 被声明为 mutable}mutable int m_A; // 使用 mutable 关键字
};
常对象
常对象对变量的调用
class Person
{
public:// this 指针的本质是 指针常量 指针的指向是不可以修改的void showPerson() const // 加const 让 this 指向的指针不可以修改{m_A 10;}mutable int m_A;int m_B;
};
//常对象
// 声明对象前加 const 称该对象为常对象
// 常对象只能调用常函数void test()
{const Person p; // 在对象前加 const 变为常对象p.m_A 10; // 正确的 可以修改p.m_B 10; // 错误的
}常对象只能调用常函数
class Person
{
public:// this 指针的本质是 指针常量 指针的指向是不可以修改的void showPerson() const // 加const 让 this 指向的指针不可以修改{m_A 10;}void fun(){m_B 10;}mutable int m_A;int m_B;
};
//常对象
// 声明对象前加 const 称该对象为常对象
// 常对象只能调用常函数void test()
{const Person p; // 在对象前加 const 变为常对象p.showPerson(); // 正确的p.fun(); // 错误的
}
如果上面中 p.fun(); 可以实现的话 那么就会修改 m_B 的值这就违背了常对象不能修改一般的值的规则所以不能调用