(一一七)this指针

简介:

所谓this指针,是一个指针,且这个指针用于类函数定义内部,指向当前对象(的地址)。

 

this指针的特点:

①只能用于类定义内部;

 

②使用方法同结构指针,即使用运算符“->”;

 

③指向的是当前对象,即对象a使用这个类方法,其this指针指向的是对象a

 

④this->私有成员  这个在大多数情况下,和只用私有成员效果是一样的,但是若参数名和私有成员名相同,那么这种表示方法表示的是当前对象的私有成员,而同名参数表示的是参数的值。

 

如代码:

#include<iostream>
#include<string>

class man
{
private:
	std::string name;
	int a;
public:
	man(char* x="no name",int b=0)
	{
		name = x;
		a = b;
	}
	void bigger(int a)const
	{
		std::cout <<(this->a > a ? this->a : a) << std::endl;	//使用?:运算符
	}
	man less(const man& b)const	//引用一个类对象,分别输出。返回引用
	{
		std::cout << "-----------" << std::endl;
		std::cout << name << ": " << a << std::endl;
		std::cout << this->name << ": " << this->a << std::endl;
		std::cout << b.name << ": " << b.a << std::endl;
		std::cout << "-----------" << std::endl;
		if (this->a > b.a)return *this;	//注意,如果是返回的是引用,那么返回的引用也应该是被const限定(因为函数的私有对象被限定了)
		else return b;
	}
	void show()	//输出
	{
		std::cout << name << ": " << a << std::endl;
	}
};

int main()
{
	man a{ "aaa",5 };
	man b = { "bbb"	,10 };
	a.bigger(20);	//调用a的方法,和参数比较,输出大的数字
	man c = a.less(b);	//声明一个新对象,是调用对象a的方法的返回值
	c.show();	//输出新对象
	system("pause");
	return 0;
}

输出:


20
-----------
aaa: 5
aaa: 5
bbb: 10
-----------
bbb: 10
请按任意键继续. . .

总结:

①表示当前对象时,使用 *this

②表示对象中的某个私有成员时,使用 this->私有成员名 或 私有成员名 ;

③当名称冲突时,使用this表示的是当前对象的私有成员,使用名称表示的是冲突的另一个(例如参数名)(见函数void bigger(int a)const);

 


目录
相关文章
|
6月前
|
Java C++
This指针
This指针
43 0
|
5月前
|
数据采集 存储 编译器
this指针如何使C++成员指针可调用
本文介绍了C++中的this指针,它是一个隐藏的指针,用于在成员函数中访问对象实例的成员。文章通过代码示例阐述了this指针的工作原理,以及如何使用指向成员变量和成员函数的指针。此外,还提供了一个多线程爬虫示例,展示this指针如何使成员指针在对象实例上调用,同时利用代理IP和多线程提升爬取效率。
this指针如何使C++成员指针可调用
|
5月前
|
编译器 C++
this指针的特性
this指针的特性
30 0
|
5月前
类与对象\this指针
类与对象\this指针
33 0
|
6月前
|
C++ 编译器
|
6月前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
34 1
|
5月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
47 0
|
6月前
|
存储 编译器 程序员
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(下)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
25 0
|
6月前
|
存储 编译器 C语言
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(中)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
31 0
|
6月前
|
Java C语言 C++
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(上)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
40 0