C++中this指针

由类生成对象时,对象中只保存私有数据。

因为由一个类生成的所有对象为其数据服务的方法都是相同的,因此,一个类中的方法是大家所共用的。

而这就牵扯到当对象A调用方法时,如何保证该方法操作的数据是对象A的数据。

#include<iostream>
using namespace std;#define MAX 10
class OBJ
{
private:char Name[MAX];int Num;float Price;float Total_price;
protected:
public:void Get_obj(char name[], int num, float price){strcpy(Name, name);Num = num;Price = price;Total_price = Price*Num;}
};
void main()
{OBJ ob;ob.Get_obj("LLL",10,10);//对象ob调用方法Get_obj
}

 

看起来是通过对象名称调用,实则其本质是通过this指针来区别调用的对象到底是谁

进入方法前对象ob的地址为0x0088f748

进入方法后可看到该方法隐藏的this指针地址同样为0x0088f748

这也就共用方法为何可以区别调用对象的原因。

值得一提的是this指针是一个固定方向指针,即 OBJ *const this (自己的理解方法:this指针是一个常量指针指向OBJ)

因此在类的方法中不可修改其指向,但是可以修改其指向的内容。

public:void Get_obj(char Name[], int Num, float Price){strcpy(this->Name, Name);this->Num = Num;this->Price = Price;this->Total_price = Price*Num;}
private:char Name[MAX];int Num;float Price;float Total_price;

可清楚地看出,Get_obj方法中的参数与私有数据成员同名,但是使用this指针后,便不会报错。

总结:this指针是一个固定方向指针,代表当前对象,且只在对象调用方法的时候出现。

 

转载于:https://www.cnblogs.com/area-h-p/p/10314205.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jfinal java搭建_Eclipse快速搭建Jfinal web应用 (一)

JFinal简介JFinal 是基于 Java 语言的极速 WEB ORM 框架&#xff0c;其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率&#xff01;为您节约更多时间&#xff0c…

PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法

// 前台代码 $.ajax({url: http://www.ushark.net/home/save_trial_apply,dataType: jsonp,processData: false,data: $(.layui-layer-content #trialFormInfo).serialize(), }) .done(function(data) {layer.msg(申请成功); }) .fail(function(jqXHR, textStatus, errorThrown…

[转]JavaScript面向对象的特性

如果你使用JavaScript编程&#xff0c;你或许会怀疑它是否包含了面向对象&#xff08;OO&#xff09;的结构。实际上&#xff0c;JavaScript的确支持面向对象的架构――在某种程度上。本文将通过一个可扩展向量图形&#xff08;SVG&#xff09;的实例来说明JavaScript的OO结构。…

命令行获取docker远程仓库镜像列表

命令行获取docker远程仓库镜像列表 获取思路 通过curl获取镜像tag的json串,解析后得到${image}:${tag}的格式 curl获取示例 # curl [:-s] ${API}/${image}/tags curl https://registry.hub.docker.com/v1/repositories/nginx/tags 获取脚本docker-search docker-search.sh #!/b…

如何使用VisualVM监视服务器上的多个JVM

在上一篇文章中&#xff0c;我向您展示了如何使用单个管理员服务器和多个托管服务器启动WebLogic Server。 这些启动之后&#xff0c;您如何检查它们的健康状况&#xff1f; 您可以使用管理员的/ console网络应用。 但是&#xff0c;所有默认的Oracle / Open JDK 6附带的另一个…

java isight zmf_isight集成catia和abaqus,nastran流程详解

isight集成catia和abaqus,nastran流程详解CAD软件中参数化建模&#xff0c;导入有限元软件中计算各个工况&#xff0c;isight根据计算结果调整模型参数&#xff0c;反复迭代计算的过程是尺寸优化的典型问题~下面将比较详解叙述菜鸟新手是如何成功用isight集成catia和abaqus流程…

KindEditor编辑器, 利用ajax动态切换编辑器内容

// 后台成功返回数据后的js处理 KindEditor.remove(#content_id); // 先移除之前创建的编辑器 var editor KindEditor.create(#content_id, { // 再重新创建编辑器     themeType: simple,     resizeType: 1,     urlType: domain,   // 将图片保存为绝对路径…

排序算法 JavaScript

一、冒泡排序 算法介绍&#xff1a; 1.比较相邻的两个元素,如果前一个比后一个大&#xff0c;则交换位置。 2.第一轮把最大的元素放到了最后面。 3.由于每次排序最后一个都是最大的&#xff0c;所以之后按照步骤1排序最后一个元素不用比较。 function bubble_sort(arr){var swa…

[你必须知道的.NET] 第一回:恩怨情仇:is和as

发布日期&#xff1a;2007.4.7 作者&#xff1a;Anytao ©2007 Anytao.com 转贴请注明出处&#xff0c;留此信息。 本文将介绍以下内容&#xff1a; • 类型转换 • is/as操作符小议 1. 引言 类型安全是.NET设计之初重点考虑的内容之一&#xff0c;对于程序设计者来说&…

USACO 6.3 章节 你对搜索和剪枝一无所知QAQ

emmm........很久很久以前 把6.2过了 所以emmmmmm 直接跳过 &#xff0c;从6.1到6.3吧 Fence Rails 题目大意 N<50个数A1,A2... 1023个数,每个数数值<128,B 问 A 们能拆分成多少个B,求最多的个数 样例 解释 A: 3030 4018193 501516172 2524 B: 15 (ok) 16 (ok) 17 (ok) 1…

在基于Spring的Web应用程序中使用Http Session

在基于Spring的Web应用程序中拥有和使用Http会话有多种方法。 这是基于最近项目经验的总结。 方法1 只需在需要的HttpSession中注入即可。 Service public class ShoppingCartService {Autowired private HttpSession httpSession;... }尽管令人惊讶&#xff0c;但由于上述服…

获取当前鼠标的位置以及组件的位置

总结&#xff1a; div如果要触发鼠标事件要加上css样式cusor:pointer。 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

谷歌推大语言模型VideoPoet:文本图片皆可生成视频和音频

Google Research最近发布了一款名为VideoPoet的大型语言模型&#xff08;LLM&#xff09;&#xff0c;旨在解决当前视频生成领域的挑战。该领域近年来涌现出许多视频生成模型&#xff0c;但在生成连贯的大运动时仍存在瓶颈。现有领先模型要么生成较小的运动&#xff0c;要么在生…

java scala 获取类_在Scala 2.10中获取java.lang.Class [T]的Scala类型

您可以像这样实现您的方法&#xff1a;def getType[T](clazz: Class[T])(implicit runtimeMirror: ru.Mirror) runtimeMirror.classSymbol(clazz).toType然后像这样调用它&#xff1a;implicit val mirror ru.runtimeMirror(getClass.getClassLoader)getType(classOf[String])…

解决ios8下coreData没有NSPersistentContainer的问题

用Xcode8.1默认创建ios app的时候&#xff0c;使用coreData的话&#xff0c;要10.0以上的版本才行。因为NSPersistentContainer只有10.0以上的版本才有&#xff0c;10.0以下的版本是没有的&#xff0c;那怎么办呢&#xff1f;有办法&#xff0c;专为8.0版本加写的INSPersistent…

spring 与 guice 的区别好玩的好法(转)

看下边对于不同社会形态下一个人&#xff08;java对象&#xff0c;调用者&#xff09;需要一把斧子&#xff08;java对象&#xff0c;被调用者&#xff09;的例子&#xff1a;&#xff08;1&#xff09;原始社会时&#xff0c;劳动社会基本没有分工&#xff0c;需要斧子的人&am…

PyCon大会Python主题演讲摘要

PyCon 是全国际最大的以 Python 编程言语 为主题的技能大会。大会由 Python 社区组织&#xff0c;每年举行一次。在大会上&#xff0c;来自国际各地的 Python 用户与中心开发者齐聚一堂&#xff0c;共同同享 Python 国际的新鲜事、Python 言语的应用案例、运用技巧等等内容。 I…

欢迎使用Java 8之前要重温的10个JDK 7功能

Java 8发布已经快一个月了&#xff0c;我敢肯定&#xff0c;大家都在探索JDK 8的新功能。但是&#xff0c;在您完全研究Java 8之前&#xff0c;是时候重新审视Java 7上引入的一些很棒的功能了。记住&#xff0c;Java 6并没有什么功能&#xff0c;它只与JVM的更改和性能有关&…

java版本号管理_微服务项目中如何管理依赖版本号?

本文是微服务项目代码组织形式三部曲中的第三篇&#xff0c;也是最后一篇&#xff0c;通过这三篇文章&#xff0c;相信大家对于如果组织微服务中的代码已经有了一个基本认知&#xff0c;前面两篇分别是&#xff1a;第三篇相对来说要简单一些&#xff0c;本来没打算写&#xff0…

React之函数中的this指向

我们都知道在React中使用函数时&#xff0c;有两种写法&#xff0c;一是回调函数&#xff0c;二是直接调用&#xff0c;但需要在构造函数中绑定this&#xff0c;只有这样&#xff0c;函数中的this才指向本组件 总结一下没有绑定this的函数中的this指向 不管是在本组件的元素上调…