c++-刚学C++,关于C++类中this指针的疑惑

问题描述

刚学C++,关于C++类中this指针的疑惑

1.我们为什么要学习使用this指针?
2.什么时候使用this指针比较好?
(感谢您的回答)

解决方案

  1. this指针的用处:
      一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。

2......
答案就在这里:C++ 类中的this指针

解决方案二:

this指针,实际上是指向这个对象的指针。this指针只能在这个对象中使用了。在这个对象中可以使用这个对象的任何数据、函数等。
有时也为了明确参数。如 某个类定义中是这样的:

class A {
private int iNum =0;
.......

void opSome(int iNum, int iDelta)
{
    this.iNum = iNum;    // !!!!!!!!!!!!!!
        ....
}

}

解决方案三:

当做比较大的项目时,一些类是其他基类的派生类,我们想调用基类的某个成员函数或者成员变量时,但我们并不知道基类到底是什么,此时,使用this指针指向当前对象,即可调用它的成员函数或成员变量。

解决方案四:

this指针就是一个隐含的当前类的实例对象指针,通过它,你可以访问当前这个实例的成员函数,变量等。主要用来支持描述面向对象的思想

解决方案五:

this指针就是一个隐含的当前类的实例对象指针,通过它,你可以访问当前这个实例的成员函数,变量等。

我举个例子,

类里面有name属性,而构造函数的参数名字也是name,这时候需要用构造函数里的name初始化属性name,那么这时候两个不能同时在构造函数里使用,所以要使用this,如:this.name=name

时间: 2024-12-02 23:49:34

c++-刚学C++,关于C++类中this指针的疑惑的相关文章

问一个web在tomcat中的servlet简单问题,刚学servlet编译一个文件通不过

问题描述 问一个web在tomcat中的servlet简单问题,刚学servlet编译一个文件通不过 在我tomcat中运行后 打开自己编写的一个HelloServlet文件打不开.怎么解决好? 错误500 type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception ja

用c++编写一个类输出100到200的素数,对不起我是刚学的c++,问一些简单的问题!

问题描述 用c++编写一个类输出100到200的素数,对不起我是刚学的c++,问一些简单的问题! #include#include#includeusing namespace std;class Prime{private: int a[25]; int n1n2; int num;public: Prime(int n1int n2int num); void primef(); void show();};Prime::Prime(int m1int m2int n):n1(m1)n2(m

visual studio 2010-初学c#做监控界面,调用SDk的dll,把dll中的函数写入一个类,为啥总提示找不到类中的函数?

问题描述 初学c#做监控界面,调用SDk的dll,把dll中的函数写入一个类,为啥总提示找不到类中的函数? 好烦看了我好久求大神,新来没币不好意思.. 关键代码: namespace MPS.CommonClass { class yuntaikongzhi { -- [DllImport("NetLib.dll", EntryPoint = "HI_NET_DEV_PTZ_Ctrl_Standard ")] public extern static Int32 H

java-类是非静态的,而类中的主函数是静态的,静态方法为什么可以调用非静态类的内部类的非静态方法

问题描述 类是非静态的,而类中的主函数是静态的,静态方法为什么可以调用非静态类的内部类的非静态方法 代码如下所示,TestEX是非静态类,而它的主方法是静态的,TestEX类中含有两个内部类,两个内部类也是非静态的,内部类中的方法同样也是非静态的. 问题是:在静态的主方法中,实例化了内部类,为什么就可以调用非静态了呢? 哪个圈绕不出来了,求帮助! public class TestEX{ public class IntegerException extends Exception { Stri

刚学C#,怎么感觉对数据的处理很弱智?

问题描述 比如说对Datatable有条件的批量修改某列数据VFP可以Replace...for,C#只能循环判断,逐项修改,1万条记录怎么办?有没有快捷点的办法? 解决方案 解决方案二:c#也可以用SQL语句成批修改嘛.解决方案三:datasetlinq解决方案四:那你为什么不用sql批量更新,非得跟datatable较劲呢解决方案五:刚学C#的话,弱智的肯定是你,而不是C#.net解决方案六:该回复于2012-04-05 14:56:31被版主删除解决方案七:各位大神,请问一下,,,repl

我刚学hibernate,请问遇到的一个问题

问题描述 我只是想向数据库中插入一条数据,为什么只插入了一个属性值,另两个是null生成的sql语句为:Hibernate:insertintoStudent(id)values(?)建表代码为:createtablestudent(idintprimarykey,namevachar(20),ageint);然后有一个实体类:Student()privateintid;privateStringname;privateintage;set(),get()都有.Student.hbm.xml配置

C++类中的常数据成员与静态数据成员之间的区别_C 语言

刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵. 常数据成员常数据成员是指在类中定义的不能修改其值的一些数据成员,类似于我们以前学过的常变量,虽然是变量,也有自己的地址,但是一经赋初值,便不能再被修改. 适用于类中定义一些初始化之后不希望被修改的变量. 定义方法: 复制代码 代码如下: const 类型名 变量名; (1)类中的常数据成员只能通过构造函数的参数初始化表进行初始化. (2)常数

给所有刚学JAVA以及常来此版的兄弟

给所有刚学JAVA以及常来此版的兄弟 在坛子上,经常(注意,是经常,而且是非常经常!)碰到一些并不难的问题,甚至同一天就有很多类似的问题,我想作为版主,我不能光是给大家回答问题了(更何况还有很多问题我也不懂),而需要讲一下应该如何学习JAVA的问题了.我不想大家碰到了什么小问题,第一个想到的就是问人,这样是很难得到提高的! 以这两天的例子来说吧!是一个关于如何格式化日期的问题,有问如何将一个Date对象按自己需要的格式来以String输出.也有问,如何将一个给定格式的String类转换成Date

刚学Java,请教一个问题,谢谢

问题描述 importjavax.swing.*;importjava.awt.event.*;publicclassLottoEventimplementsItemListener,ActionListener,Runnable{LottoMadnessgui;Threadplaying;publicLottoEvent(LottoMadnessin){gui=in;}publicvoidactionPerformed(ActionEventevent){Stringcommand=event