侵权投诉
订阅
纠错
加入自媒体

c++学习之析构函数和const总结,你真的掌握了吗?

2020-08-07 16:41
TXP嵌入式
关注

3、搞清楚成员函数和成员变量是否都是隶属于具体对象

从面向对象的角度看,对象由属性(成员变量)和方法(成员函数)构成

从程序运行的角度来看,对象由数据和函数构成,而数据可以位于栈、堆、全局数据区;而函数只能位于代码段,而代码段是只读的,在程序运行过程中是不可以被改变的,而对于数据来说,他们处于栈、堆,是可以动态的创建和动态的删除;

4、this指针

不知大家是否注意到在拷贝构造函数里面的这条语句,参数里面是引用,那么t也相当于是一个对象,所以会有t.mi这样的写法,这里要明白:

Test(const Test& t) {   mi = t.mi;                 }

所以这里我就引出了this指针,他表示方法中的隐藏参数代指当前对象,为了说明这个,下面我们来看一个代码示例:

#include <stdio.h>

class Test{    int mi;public:    int mj;    Test(int i);    Test(const Test& t);    int getMi();    void print();};

Test::Test(int i){    mi = i;}

Test::Test(const Test& t){    mi = t.mi;}    int Test::getMi(){    return mi;}

void Test::print(){    printf("this = %p", this);}

int main(){    Test t1(1);    Test t2(2);    Test t3(3);        printf("t1.getMi() = %d", t1.getMi());    printf("&t1 = %p", &t1);    t1.print();        printf("t2.getMi() = %d", t2.getMi());    printf("&t2 = %p", &t2);    t2.print();        printf("t3.getMi() = %d", t3.getMi());    printf("&t3 = %p", &t3);    t3.print();        return 0;}

输出结果:

root@txp-virtual-machine:/home/txp# ./a.outt1.getMi() = 1&t1 = 0x7ffec3f5e750this = 0x7ffec3f5e750t2.getMi() = 2&t2 = 0x7ffec3f5e758this = 0x7ffec3f5e758t3.getMi() = 3&t3 = 0x7ffec3f5e760this = 0x7ffec3f5e760

分析:

在类的成员函数当中,有一个隐含的参数,就是我们刚才说的this指针,它的值就是调用这个函数所对应的对象的地址,说白了,this指针指向当前对象。

每一个对象都有一套自己的成员变量,对象和对象之间的成员变量是独立的、不同的;但是每一个对象都共享一个类的成员函数

三、总结:

对象的析构顺序与构造顺序相反

const 关键字能够修饰对象,得到只读对象

只读对象只能调用 const 成员函数

所有对象共享类的成员函数

隐藏的 this 指针用于表示当前对象

好了,今天的分享就到这里,如果文章中有错误或者不理解的地方,可以交流活动,一起进步。我是txp,下期见!

<上一页  1  2  3  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    电子工程 猎头职位 更多
    扫码关注公众号
    OFweek电子工程网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号