C++是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。本文主要介绍C++ this 指针。

1、C++ this 指针

类的成员函数可以访问类的数据,一般类成员和函数操作都是通过对象,每个对象都拥有一个指针:this 指针,通过this指针来访问自己的地址。this 指针并不是对象的一部分,this 指针所占的内存大小是不会反应在sizeof操作符上的。this 指针的类型取决于使用this指针的成员函数类型以及对象类型。this只能在成员函数中使用。全局函数,静态函数都不能使用 thisthis在成员函数的开始执行前构造的,在成员的执行结束后清除。this 指针只有在成员函数中才有定义。

2、C++ this 指针的使用

在类的非静态成员函数中返回类对象本身时,可以使用圆点运算符(*this).,箭头运算符this->,另外,也可以返回关于*this的引用。

例如,

#include<iostream>
#include<string>
using namespace std;
class Person
{
  int sno;
  string sname;
  int age;
  int grade;
public:
  Person(int s=0,string n="",int a=0,int g=0)
  {
    sno=s;
    sname=n;
    age=a;
    grade=g;
  }
  void Setsname(int sn)   //使用this指针进行赋值
  {
    this->sname=sn;
  }
  int  Setage(int a)
  {
    this->age=a;
    return (*this).age; //使用this指针返回该对象的年龄
  }
  void print()
  {
    cout<<"sname = "<<this->sname<<endl;  //显式this指针通过箭头操作符访问
    cout<<"sno   = "<<sno<<endl;//隐式使用this指针打印
    cout<<"age   = "<<(*this).age<<endl;//显式使用this指针通过远点操作符
    cout<<"grade = "<<this->grade<<endl<<endl;
  }
};
int main()
{
  Person p(761,"张三",19,3);
  p.print();      //输出信息
  p.Setage(12);  //使用this指针修改年龄
  p.print();     //再次输出
  return 0;
}

推荐文档