更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C++中this指针的用法详解

  • 发布:C++培训
  • 来源:资料库
  • 时间:2020-04-10 16:12

有个问题是刚开始学习C++的人都想知道的,那就是C++的类对象的大小是多少?可能的猜测是它所有数据成员的大小加上所有函数指针的大小,这样就是类的大小。我们来测试一下,代码如下,如有需要复制即可:

#include<iostream>

using namespace std;

class A

{

public:

A();

~A();

void setA(int a, int b, int c);

private:

int a;

int b;

char c;

};

A::A()

{

}

A::~A()

{

}

void A::setA(int a, int b, int c)

{

this->a = a;

this->b = b;

this->c = c;

}

class B

{

public:

B();

~B();

void setB(int a, double b, double c);

private:

int z;

double x;

double y;

};

void B::setB(int a, double b, double c)

{

this->z = a;

this->x = b;

this->y = c;

}

B::B()

{

}

B::~B()

{

}

int main()

{

A a;

B b;

cout << "对象a的大小:" << sizeof(a) << endl;

cout << "对象b的大小:" << sizeof(b) << endl;

return 0;

}

测试结果如下:

this指针的用法

这个大小看起来就是数据成员放在结构体中的大小。依然采用内存对齐。这说明函数成员和数据成员是分开存储的。

那么C++类的函数成员是怎么确定是哪一个对象在调用它?

为了解决这个问题,C++设计了一个叫做this指针的东西。它能帮助成员函数知道谁在调用它。

this指针

this指针存放着当前对象的地址,也就是this指针指向当前对象。可以使用它来返回对象本身。

this指针不是对象的成员。

this指针只能在成员函数内部使用,类外以及成员函数外部都不能使用。

this指针是普通成员函数的一个隐藏参数。

注意:类的静态成员函数不具备this指针。这样就限制了静态成员函数的功能。使得错误降低。

显然,有了this指针做为函数的隐藏参数,函数自然而然就知道是哪一个对象在调用它。就能正确使用相应对象的成员。this指针的另外一个附加功能就是当类数据成员和类的函数参数名称一致的时候,使用this指针可以避免混淆。就像下面代码中的一样。

void A::setA(int a, int b, int c)

{

this->a = a;

this->b = b;

this->c = c;

}

免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C++中多态实现的原理详解
下一篇:C语言switch使用之诡异用法详解

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省