this指针基础介绍

转载 2016年08月30日 10:30:38


=================this指针的由来====================

      一个学生可以有多本书一样,而这些书都是属于这个同学的;同理,如果有很多个同学在一起,那么为了确定他们的书不要拿混淆了,最好的办法我想应该就是每个同学都在自己的书上写上名字,这样肯定就不会拿错了。

      同理,一个对象的多个成员就可看作是这个对象所拥有的书;而在很多个对象中间,我们为了证明某个成员是自己的成员,而不是其他对象的成员,我们同样需要给这些成员取上名字。在C++中,我们利用this指针帮助对象做到这一点,this指针记录每个对象的内存地址,然后通过运算符->访问该对象的成员。

=================this指针作用示例====================

      二话不说!我们通过一个程序来体现this指针的实际用处:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
class A
{
public:
    int get() const{return i;}
    void set(int x){this->i=x;cout<<"this指针保存的内存地址为:"<<this<<endl;}
private:
    int i;
};
 
int main()
{
    A a;
    a.set(9);
    cout<<"对象a所在的内存地址为:"<<&a<<endl;
    cout<<"对象a所保存的值为:"<<a.get()<<endl;
    cout<<endl;
    A b;
    b.set(999);
    cout<<"对象b所在的内存地址为:"<<&b<<endl;
    cout<<"对象b所保存的值为:"<<b.get()<<endl;
    return 0;
}

      这个程序的输出如下:

      通过这个输出结果,我们可以看到,对象a的内存地址和this指针的一模一样(都是0017F7E8);而当运行到对象b的时候,它的内存地址又和它所对应的this指针指向的内存地址一模一样了(都是0017F7DC)。这就说明了this指针变量记录的是当前对象的内存地址,即this指针指向当前的对象!

      在程序的第8行,我们就用了this指针的这个属性,即:this->i=x;这句话就表示把x的值赋值给当前的对象的私有成员函数i。

=================总结====================

      通过上面这个例子,我们可以看到this指针最大的作用就是它保存了当前对象的地址,并且应用指针的形式指向了当前的对象。这种好处我们将会在另外一篇博文中看到.......

http://www.cnblogs.com/uniqueliu/archive/2011/09/24/2189545.html

this指针介绍

最近在看相关的书籍时,看到了一些关于this指针的介绍,觉得很有用,所以我在下面摘录一些相关的内容。以供大家参考学习。this指针本质是一个函数参数this指针从本质上来说是一个函数参数,这个函数参数...
  • yiyele
  • yiyele
  • 2017年06月29日 16:12
  • 6121

this指针基础介绍

=================this指针的由来====================       一个学生可以有多本书一样,而这些书都是属于这个同学的;同理,如果有很多个同学在一起,那么...
  • tanqiuwei
  • tanqiuwei
  • 2013年11月07日 09:52
  • 534

C++中this指针的本质

一直以来对C++中的this不理解,只知道在构造函数中,如果构造函数的参数和类成员的名字一样的话,就可以用this指针来区分,如:this->a = a;一直以来都有这个疑问:this究竟是什么?我们...
  • u011943221
  • u011943221
  • 2015年08月13日 19:35
  • 833

C++ class 中隐含的this指针

this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子:       void Date::setMonth( int mn )       {        month = ...
  • u012943597
  • u012943597
  • 2013年11月29日 18:23
  • 1917

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

为什么引入this指针?     最简单的应用场景就是:当我们在类中定义了一个变量,同时在类成员函数中定义了同一变量时,也就是说变量名重复时,但是我们想使用类中定义的变量,这个时候我们该怎么办呢?这个...
  • u011939264
  • u011939264
  • 2016年05月31日 11:15
  • 4416

JS中的this指针详解

原文地址:http://www.cnblogs.com/kongxy/p/4581223.html (内容根据自己理解,有改动)         JS中this关键字很常见,但是它似乎变幻莫测,让人抓...
  • qq846294282
  • qq846294282
  • 2017年03月05日 21:22
  • 423

c++之this指针详解

1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动...
  • qq_35644234
  • qq_35644234
  • 2016年09月22日 15:33
  • 549

C++中关于this指针、static等内容的探究

This指针 有时候方法涉及到两个对象,在这种情况下,需要用到c++中的this指针; 1.指向当前对象,可以访问当前对象的所有成员. 2.在类内部可以访问所有成员 3.this只能在非静态成员函数内...
  • qq_23215649
  • qq_23215649
  • 2017年01月18日 10:53
  • 234

Java 基础内容简介

一.基本概念 类: 将一些具有相似属性和共同方法的事物抽象为一个类,以便于对事物进行描述.(足球,篮球,排球可以抽象为一个类 球 ) 对象:一个类的具体实例.(球的一个具体事物,足球) 继承: ...
  • mydream20130314
  • mydream20130314
  • 2015年04月05日 11:22
  • 419

this指针指向当前调用对象,只是用于类的非静态成员函数。静态函数和全局函数 无当前对象,无this指针。

void Date::setMonth( int mn ) {      month = mn; // 这三句是等价的      this->month = mn;      (*this).mo...
  • hzw05103020
  • hzw05103020
  • 2016年03月02日 23:06
  • 1990
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:this指针基础介绍
举报原因:
原因补充:

(最多只允许输入30个字)