返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ 中this指针的用途详解
  • 329
分享到

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

2024-04-02 19:04:59 329人浏览 安东尼
摘要

目录1.区分形参和变量同名时:2.return *this返回函数本身总结先说结论: 1.形参和变量同名时,可用this指针来区分 2.在类的非静态成员函数中返回本身,可用retur

先说结论:

1.形参和变量同名时,可用this指针来区分

2.在类的非静态成员函数中返回本身,可用return *this

1.区分形参和变量同名时:


#include <iOStream>
using namespace std;
class Person
{
public:
	Person(int age)
	{
		age = age;
	}
	int age;
};
void test01()
{
	Person p1(18);
	cout << "年龄为: " << p1.age << endl;
}
int main()
{
	test01();
	system("pause");
	return 0;
}

上述代码运行结果多少呢? 答案是-858993460 当然这个答案毫无意义

为什么呢 将上述代码中的age选中 然后会有下面这种情况 相信大家知道什么意思 就是编译器不会像人脑一样将左边的age看成类的属性age,所以就导致编译器认为上述3个age是一回事,所以再编译器中相当于Person类的属性age没有赋值,所以进行输出的时候就会用0xCCCCCCCC来进行填充,就有了输出是-858993460的答案

那怎么解决上述问题呢?如下图:

在第一个age前面加上this,什么意思呢看看官方解释:

this指针指向被调用的成员函数所属的对象!

大白话来讲就是谁调用这个类,this就指向谁,上述这个this指向的就是p1

当然这种错误的解决方法还有一种最简单的:在类中起属性名字的时候,尽量别和形参名取一样就好了

2.return *this返回函数本身


#include <iostream>
using namespace std;
class Person
{
public:
	Person(int age)
	{
		m_age = age;
	}
	Person& PersonAddAge(Person &p)
	{
		this->m_age += p.m_age;
		return *this;
	}
	int m_age;
};
void test02()
{
	Person p1(18);
	Person p2(18);
	p1.PersonAddAge(p2).PersonAddAge(p2).PersonAddAge(p2);  
	cout << p1.m_age << endl;
}
int main()
{
	test02();
	system("pause");
	return 0;
}

下面的块代码中:这块代码中有两个点

1.返回值类型使用了Person的引用

2.return *this


Person& PersonAddAge(Person &p)
{
	this->m_age += p.m_age;
	return *this;
}

A1:为什么要使用Person&的返回值

return *this就是返回函数本身,但是得注意返回值类型,记得做引用传递!!!

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C++ 中this指针的用途详解

本文链接: https://lsjlt.com/news/137116.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++ 中this指针的用途详解
    目录1.区分形参和变量同名时:2.return *this返回函数本身总结先说结论: 1.形参和变量同名时,可用this指针来区分 2.在类的非静态成员函数中返回本身,可用retur...
    99+
    2024-04-02
  • c++中this指针的用法详解
    this 指针是 c++ 中的特殊指针,指向当前对象实例,用于访问成员变量、调用成员函数,传递给其他函数,限制对成员的访问,以及与其他指针区分。 this 指针在 C++ 中的用法 t...
    99+
    2024-05-08
    c++
  • C++this指针详情
    还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。 const Stock & Sto...
    99+
    2024-04-02
  • C++中this指针理解及作用
    目录01、C++程序到C程序的翻译02、this指针的作用03、this指针和静态成员函数04、小结01、C++程序到C程序的翻译 想要理解C++语言中的this指针,下面我们做一个...
    99+
    2024-04-02
  • c++中this指针的含义
    c++ 中的 this 指针指向调用成员函数的当前对象,它允许函数访问对象成员变量和函数。其作用包括:访问对象成员变量;调用对象成员函数;作为对象引用的代理。 C++ 中的 this ...
    99+
    2024-05-10
    c++
  • c++中this指针的特点
    this 指针在 c++ 中指向正在执行方法的调用对象。其特点包括:自引用隐式传递类型限定支持常量和引用用于虚函数仅在非静态成员函数中可用在进入和退出非静态成员函数时初始化和销毁 C+...
    99+
    2024-05-08
    c++
  • C++对象模型和this指针详解
    目录对象模型一、二、三、四、五、this指针一、二、总结对象模型 成员变量和成员函数分开存储 一、 只有非静态成员变量才属于类的对象上 空对象占用字节为1 class Pe...
    99+
    2024-04-02
  • C++中的this指针有什么用
    这篇文章主要介绍“C++中的this指针有什么用”,在日常操作中,相信很多人在C++中的this指针有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++中的this指针有什么用”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • C++中的this指针的功能
    这篇文章主要讲解了“C++中的this指针的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的this指针的功能”吧!this指针是一个特殊的指针,当类的某个非静态的成员函数在执行...
    99+
    2023-06-17
  • c++中this指针指向什么
    this 指针在 c++ 中指向当前对象的实例。用法包括:访问成员变量:this->成员变量名调用成员函数:this->成员函数名()传递对象引用:作为参数传递给其他函数,以...
    99+
    2024-05-09
    c++
  • 怎么在C++中使用this指针和空指针
    本篇文章为大家展示了怎么在C++中使用this指针和空指针,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属...
    99+
    2023-06-14
  • C++ this指针和空指针的具体使用
    每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码那么问题是:这—块代码是如何区分那个对象调用自己的呢? C++通过提供特殊的对象指针,this...
    99+
    2024-04-02
  • C++this指针怎么理解
    C++this指针怎么理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。...
    99+
    2023-06-22
  • C++简明图解this指针的使用
    目录成员数据和成员函数的存储方式this指针的引入this指针概述this指针的使用c++的封装性:将数据 和 方法 封装在一起 数据 和 方法 是分开存储。 每个对象 拥有独立的数...
    99+
    2024-04-02
  • C++中类的this指针怎么使用
    这篇“C++中类的this指针怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中类的this指针怎么使用”文章吧...
    99+
    2023-06-29
  • C++静态成员函数和this指针详解
    目录静态成员1.静态成员变量2.静态成员函数成员变量和成员函数分开存储this 指针空指针访问成员函数总结静态成员 静态成员就是在成员变量和成员函数前加上关键字static,称为静态...
    99+
    2024-04-02
  • C/C++中智能指针的用法详解
    目录前言一、什么是智能指针二、使用方法1.shared_ptr2.unique_ptr3.weak_ptr前言 本章主要介绍一些C/C++中智能指针的实现原理以及如何使用 一、什么是...
    99+
    2023-01-04
    C++智能指针使用 C++智能指针
  • C++ const的使用及this指针常方法(面试最爱问的this指针)
    目录1. const的使用2. this指针 2.1 前言(this指针的引出)2.2 什么是this指针2.3 this指针的特性2.4 [面试题1] this指针存在哪...
    99+
    2024-04-02
  • C语言简析指针用途
    目录对象的访问方式什么是指针指针变量与指针相关的运算符指针变量作为函数参数数组与指针多维数组与指针指针常量 和 常量指针指针数组 与 数组指针字符串与指针函数指针二级指针 与 多级指...
    99+
    2024-04-02
  • C++指针与数组:指针详解
    目录一. What(什么是指针)1. 地址初了解2. 指针概念3. 指针与指针变量二. Why(为什么要有指针)三. How(如何使用指针)1. 基本定义2. 取地址操作符 &...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作