C++类中的this指针的作用

1.我们知道C++的类成员函数中,默认都隐含了一个this指针,标识调用该成员函数的对象

2.为什么需要有一个this指针呢?C++设计这个机制的初衷是什么呢?

我们知道,普通的C++类,其成员函数是类的所有对象共享的,而数据时每个对象所独有的.即:数据独有,方法共享

因此在调用类的某个成员方法(非静态方法)时,我怎么知道是哪个对象调用的呢?此时就是通过this指针来区分的,通过this指针我可以区分是该类的哪个对象正在调用该成员方法.

注意事项:

a.this指针不属于对象本身的一部分,不会影响sizeof作用于某个类对象的结果,因为sizeof本身也是求对象所对应的类的大小,与对象无关

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

时间: 2024-10-02 18:04:06

C++类中的this指针的作用的相关文章

java中一个类中的 this. 是什么作用

2)this代表的是本类的实例对象,不是什么调用本类的方法的对象.当你用new创建一个对象的时候,对象就已经在内存了.(具体的你的血jvm和反射).构造方法只是为了给对象里的属性赋值.在类里任何地方出现的this都是指的本类的实例对象,构造方法里的也 原文地址:https://www.cnblogs.com/isme-zjh/p/11396055.html

C++中使用函数指针 【瓦特芯笔记】

     在C++类中使用函数指针. 类型定义:      typedef 返回类型(类名::*新类型)(参数表) //类定义 class CA { public: char lcFun(int a) { return; } };      CA ca;      typedef char (CA::*PTRFUN)(int);      PTRFUN pFun;     void main()     {        pFun = CA::lcFun;        ca.(*pFun)(2

夺命雷公狗---javascript NO:23 JavaScript中的this指针

1.自定义类中的this指针 在php中,我们在自定义类时,属性都是预定义在我们的自定义类中,而在JavaScript代码中,所有对象的属性和方法都是动态添加到对象中,那么可不可以让我们的自定义对象自动拥有类的属性和方法? 答:可以,通过this指针 例1:谁实例化自定义类,那么类中的this就指向谁 <!DOCTYPE html> <html> <head> <meta charset=’utf-8′> <title></title>

QT中使用函数指针

想仿命令行,所以定义了一个类,让一个String 对应一个 function,将两者输入list容器. 类中定义了 QString commandStr; void (MainWindow::*commandFun)(void);一个QString ,一个指向MainWindow类成员函数的指针.但是没想到在类中使用函数指针这么复杂. 一般情况,我们使用函数指针声明和引用都很简单明了.但是在类中就不一样了.最后的成功的形式如下: class command_type { public: comm

多文档中建立一个对话框类,通过这个方法来在其他类中得到对话框对象指针,访问对话框成员

{ // 添加内容 m_pDrawTool = new CDrawToolDlg; m_pDrawTool->Create(IDD_DRAWTOOLS, this); m_pDrawTool->ShowWindow(SW_SHOW); // 让窗口出现在屏幕右下方 CRect dlgRect; CRect mainRect; m_pDrawTool->GetClientRect(&dlgRect); GetWindowRect(mainRect); // 计算显示的坐标 int

Static在类中的作用

static 在类内用于定义静态成员.静态成员与具体的类无关,它的值及作用范围适用于所有的类,当它的值发生改变时,在所有的类中的值都会发生变化.并且,类内的Static成员,应在类外重新定义一次. 类的静态成员一般不应该在类内初始化.如初始化,必须使用constexpr进行修饰,成为一个常量. constexpr的作用是修饰一个常量,并在编译期检查一个表达式是否是常量表达式.

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

c++中基类与派生类中隐含的this指针的分析

先不要看结果,看一下你是否真正了解了this指针? 1 #include<iostream> 2 using namespace std; 3 4 class Parent{ 5 public: 6 int x; 7 Parent *p; 8 public: 9 Parent(){} 10 Parent(int x){ 11 this->x=x; 12 p=this; 13 } 14 virtual void f(){ 15 cout<<"Parent::f()&q

【ThinkingInC++】62、类中指针

类中指针 CopyingWithPointers.cpp /** * 书本:[ThinkingInC++] * 功能:类中指针 * 时间:2014年10月4日14:26:19 * 作者:cutter_point */ #include "../require.h" #include <iostream> #include <string> using namespace std; class Dog { string nm; public: Dog(const