返回

C++ 核心4.3 C++ 对象模型和this 指针

发布时间:2023-02-15 20:38:29 307

4.3 C++ 对象模型和this 指针

4.3.1 成员变量和成员函数分开存储

只有非静态成员变量 属于类对象上。

4.3.2 this指针概念

this指针 指向被调用的成员函数所属的对象。 隐含在每个非静态成员函数内。 不需要定义,直接使用。

this用途: 1.形参和成员变量同名,用this区分 2.返回对线本身用 *this

class Person
{
public:
    Person(int age){
        this->age = age; // 1.解决名称冲突
    }
    Person& addPersonAge(Person & p){
        this->age += p.age;
        return *this;
    }
    int age;
}
...
Person p1(10);
Person p2(10);
p2.addPersonAge(p1).addPersonAge(p1).addPersonAge(p1);

4.3.3 空指针访问成员函数

使用空指针(NULL)访问成员,会报错。 可以在访问前判断NULL。

4.3.4 const 修饰成员函数

常函数: 成员函数后加,称为常函数; 常函数内不可以修改成员属性; 成员属性声明时加mutable,则常函数内仍然可以修改。当做特例。

常对象: 声明对象前加const const Person p 常对象只能调用常函数

class Person{
public:
    void showPerson() const{
        // this->m_A = 100; 不能修改
        this->m_B = 100; //mutable变量可以修改。作为特例
        
    }
    int m_A;
    mutable int m_B;
};

this指针的本质是 指针常量(Person* const this),指向当前对象this的指向不能修改。

在成员函数后加上const,则this所指的变量也不能修改了。(const Person * const this)

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
C++ 核心 4.2 对象的初始化和清理 2023-02-15 20:07:11