21xrx.com
2025-03-21 22:18:55 Friday
文章检索 我的文章 写文章
C++中使用this指针进行传递
2023-07-04 23:10:45 深夜i     --     --
C++ this指针 传递

在C++中,this指针是一种指向当前对象的指针,它在类的成员函数中特别有用。使用this指针可以访问调用该函数的对象的成员变量和成员函数,使得对象的操作更加灵活。此外,this指针还可以作为参数传递给其他函数,让调用函数能够访问当前对象的属性。

在C++中,每个对象都有一个隐含的this指针,指向该对象的存储位置。当调用成员函数时,编译器会自动将该对象的this指针作为隐含参数传递给函数。这样,在成员函数内部就可以使用this指针来访问对象的成员变量和成员函数。

在下面的示例中,定义了一个名为Person的类,该类有两个私有成员变量name和age,以及两个公有函数setName和setAge来设置它们的值。在函数中,使用this指针来引用当前对象,并设置它的成员变量。

#include <iostream>
#include <string>
using namespace std;
class Person {
private:
  string name;
  int age;
public:
  void setName(string name)
    this->name = name;
  
  void setAge(int age)
    this->age = age;
  
};
int main() {
  Person person1;
  person1.setName("Tom");
  person1.setAge(20);
  return 0;
}

除了在成员函数中使用this指针,它还可以作为参数传递给其他函数。当需要在非成员函数中访问当前对象的属性时,就可以使用this指针。

例如,在下面的示例中,定义了一个名为printPerson的非成员函数,它接受一个指向Person对象的指针作为参数。在函数中,使用this指针来访问该对象的成员变量和成员函数,并将它们输出到控制台上。

#include <iostream>
#include <string>
using namespace std;
class Person {
private:
  string name;
  int age;
public:
  void setName(string name)
    this->name = name;
  
  void setAge(int age)
    this->age = age;
  
  friend void printPerson(Person *person);
};
void printPerson(Person *person)
  cout << "Name: " << person->name << endl;
  cout << "Age: " << person->age << endl;
int main() {
  Person person1;
  person1.setName("Tom");
  person1.setAge(20);
  printPerson(&person1);
  return 0;
}

总之,this指针是C++中的一个非常重要的概念,它可以帮助程序员更好地理解和操作对象,提高代码的可读性和可维护性。无论是在成员函数还是非成员函数中使用this指针,都是非常有用的。因此,我们建议程序员要善于理解和使用this指针。

  
  

评论区