首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++C++ 类中 this 指针用法 ① ( C++ 类中 this 指针引入 | this 指针用法 | 代码示例 )

一、C++ 类中 this 指针 1、C++ 类中 this 指针引入 在 C++ 类中 , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在类中每个 非静态成员函数...中 , 都可以调用 this 指针 ; this 指针 是指向 调用对象 自身 指针 , 也就是调用 该成员函数 实例对象 内存地址 ; 由于 this 指针只能在 非静态成员函数内部使用..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 中 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ 类中...this 指针用法 C++ 类中 this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 中 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 在 非静态成员函数 中 , 直接使用如下语法 , 访问 本实例对象 中 非静态成员变量 ; 先获取指针指向数据 然后访问数据中成员变量 ; (*this).成员变量名 在 C++

23920

C++指针用法汇集

1、指向对象指针   定义:对象空间起始地址就是对象指针。   ...说明:在建立对象时,编译系统就为每个对象分配一定存储空间以存放其成员,不过注意,在一般情况下不同对象数据存储单元中存放数据成员是不相同,而不同对象函数代码却是相同,也就是说,它们函数代码是共享...这时我们可以定义一个指针变量用来存放对象指针。   ...定义指向类对象指针变量一般形式是:   类名 *对象指针名;   如对于与个Time类对象,我们可以有: Time t; Time *p; p=&t;   我们就可以通过对象指针访问对象和对象成员...指向对象中成员函数gettime(),相当于t.gettime()   也可以用如下形式: p->hour 和 p->gettime()和上面是等价

11510
您找到你想要的搜索结果了吗?
是的
没有找到

C++智能指针用法

智能指针 智能指针是一种在C++中用于管理动态分配内存工具,它们提供了更安全和方便方式来管理内存资源,以避免内存泄漏和资源管理错误。...常用智能指针类型包括: std::shared_ptr:共享指针,用于多个智能指针共享相同资源,引用计数方式来管理资源生命周期。当最后一个引用离开作用域时,资源被释放。...用法 3.1 std::shared_ptr:共享指针 std::shared_ptr 是 C++ 标准库中一个智能指针,用于管理动态分配对象生命周期。...3.2 std::unique_ptr:唯一指针 std::unique_ptr 是 C++ 标准库中另一个智能指针类,用于管理动态分配对象,但与 std::shared_ptr 不同,std::...std::weak_ptr 是 C++ 标准库中另一种智能指针类,它用于解决 std::shared_ptr 循环引用问题。

10610

C++中this指针理解和用法

大家好,又见面了,我是你们朋友全栈君。 关于this指针一个精典回答: 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...对于一个类实例来说, 你可以看到它成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。...个人理解: (ps:class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子门,那么里面的东西就随意你取用了) this是指向实例化对象本身时候一个指针,里面存储是对象本身地址...在非静态成员函数中,编译器在编译时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。...,即将point1对象地址传递给了this指针 b.编译器编译后原型应该是void MovePoint(Point *this, int a, int b) c.在函数体中可以写成{this->x

64030

C++中this指针作用以及用法详解

大家好,又见面了,我是你们朋友全栈君。 为什么引用this指针?...1.this指针作用 指针存在于类成员函数中,指向被调用函数类实例地址。 一个对象this指针并不是对象本身一部分,不会影响sizeof()结果。...this指针作用域是在类内部,当在类非静态成员函数中访问类非静态成员时候,编译器会自动将对象本身地址作为一个隐含参数传递给函数。...2.this指针使用 (1)在类非静态成员函数中返回类对象本身时候,直接使用 return *this; (2)当参数与函数成员变量名相同时,应使用 this.age = age; 3.this指针特点...当调用一个类成员函数时,编译器将类指针作为函数this参数传递进去。

38730

this指针用法

this指针只能在一个类成员函数中调用,它表示当前对象地址。...编译器通常会对this指针做一些优化,因此,this指针传递效率比较高--如vc通常是通过ecx寄存器来传递this参数。 3. 回答 #1:this指针是什么时候创建?...#3:this指针如何传递给类中函数?绑定?还是在函数参数首参数就是this指针.那么this指针又是如何找到类实例后函数? this是通过函数参数首参数来传递。...在C++中,类和结构是只有一个区别的:类成员默认是private,而结构是public。 this是类指针,如果换成结构,那this就是结构指针了。...因此,你获得一个对象后,也不能通过对象使用this指针。所以,我们也无法知道一个对象this指针位置(只有在成员函数里才有this指针位置)。

42620

函数指针用法

C++编程时候,有时候我在考虑,如果把一个函数能够当作一个变量,被调用、传递就会方便很多,之前学习了lambda表达式,用lamda表达式会比较方便。下面可以介绍一种新方法,函数指针。...函数指针用例 int add(int a,int b){ return a+b; } void Widget::on_pushButton_clicked() { int (*pfunc...)(int a,int b); pfunc = add; qDebug()<<pfunc(1,2)<<endl; }   如上,通过一个简单了例子,可以看到函数指针声明以及赋值、应用过程...int,int)> toTest; toTest["test"] = add; qDebug()<<toTest["test"](1,2)<<endl; }   如果想要add函数为类中非静态成员函数...toTest["test"] = add;//用&add也行 qDebug()<<toTest["test"](1,2)<<endl; }   当我们把函数名作为一个右值使用时,此函数名会自动地转化为指针

29620

详解c++指针指针指针引用

展示一下使用指针指针指针引用修改传递给方法指针,以便更好使用它。...(这里说指针指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针复本传递给了方法,也可以说传递指针指针值传递。...如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改指针copy而不是指针本身,原来指针还保留着原来 值。...输出是两个2 使用指针指针 展示一下使用指针指针做为参数 void func(int **p) { *p = &m_value; // 也可以根据你需求分配内存 *p...我们看一下 func(int **p)这个方法 p:  是一个指针指针,在这里我们不会去对它做修改,否则会丢失这个指针指向指针地址 *p:  是被指向指针,是一个地址。

1.3K60

C++this指针

大家好,又见面了,我是你们朋友全栈君。 C++this指针 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...C++在初始化对象时,每个对象中数据成员都会得到系统分配自己独立存储空间。...this指针特性: 1、this指针类型const(类名const),为右值。 2、this指针本身不占用大小,并不是对象本身一部分,不影响sizeof结果。...5、只有在类非静态成员函数中才可以使用this指针, 其它任何函数都不可以。 6、this指针时刻指向对象 。 7、当this指针指向空时,是不会指向对象。...也就是说,成员函数参数不能与对象成员变量重名,如果一定要重名,就必须用this指针指明。

55020

this指针介绍和用法

记录时间:2019-3-4 this指针介绍 this指针是面向对象程序设计一项概念,在C++中,它表示当前运行对象。在实现对象方法时,this指针来获得该对象自身引用。...本来,成员函数volume定义如下: int Box::volume( ) { return (height*width*length); } C++把它处理为 int Box::volume...在C++中,struct是一种类类型,struct和class只有一个区别的:class成员和继承默认访问控制权限是private,而struct是public。...应当注意this是一个右值(方法一个隐式参数) ,不存在所谓this“位置”,只是this表示了对象存储位置而已。&this违反语义规则,是错误用法,不会编译通过。...this->A();//错误 this->~A();//正确 }; static void s_fun(); A(); ~A(); } this面试题 (1)选自《C/C+

45520

C++ this指针

:this指针,通过this指针来访问自己地址。...注意: this指针并不是对象一部分,this指针所占内存大小是不会反应在sizeof操作符上。...this指针类型取决于使用this指针成员函数类型以及对象类型, 一、this指针概念 定义 在 C++ 中,每一个对象都能通过 this 指针来访问自己地址。...this指针创建 this指针在成员函数开始执行前构造,在成员执行结束后清除。 this指针只有在成员函数中才有定义。 创建一个对象后,不能通过对象使用this指针。...也无法知道一个对象this指针位置(只有在成员函数里才有this指针位置)。当然,在成员函数里,你是可以知道this指针位置(可以&this获得),也可以直接使用

54420

this指针用法及其深究

首先,我以码神名义起誓,this指针绝对重要,尤其是对于c++这个面向对象编程语言来说! 有的码手可能要说了:你说重要就重要?那我还说不重要呢?...,这时c++this指针就应用而生了 注: 每个对象都拥有一个指针:this指针,通过this指针来访问自己地址。...this指针不是对象一部分,故sizeof不会体现出this指针大小,this指针类型取决于使用this指针成员函数类型以及对象类型。...,可使用return *this 总结 通过上面我们知道在C++中成员变量和成员函数是分开存储 每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型对象会共用一块代码 c++通过提供特殊对象指针...this指针指向被调用成员函数所属对象 this指针是隐含每一个非静态成员函数内一种指针 this指针不需要定义,直接使用即可 最后:this指针指向被调用成员函数所属对象 喜欢,支持一下新人吧

23840

void指针进阶用法

比如char *型指针,自增一定是指针指向地址加1,short *型指针自增,则偏移2。 在C/C++中,在任意时刻都可以使用其它类型指针来代替void指针,或者用void指针来代替其他类型指针。...任何数据类型(char,int,float等)任何变量地址都可以赋值给void指针变量。 对指针变量解引用,使用间接运算符*达到目的。 但是在使用空指针情况下,需要转换指针变量以解引用。...这是因为空指针没有与之关联数据类型。 编译器无法知道void指针指向数据类型。 因此,要获取由void指针指向数据,需要使用在void指针位置内保存正确类型数据进行类型转换。...那么怎么做到底层抽象呢,我们可以利用函数指针定义统一接口,具体部署时,只需要将实现函数指针赋值给对应函数指针即可,这样就做到了接口抽象统一。其实这就是驱动模型一个简易雏形。...C++等高级语言虚函数定义接口思想 统一接口底层实现抽象,实现了驱动分层思想 void *指针由这个例子,可以延伸出很多类似的应用 启示:一些语言细节如果深入了解其背后机理,可以得到很多比较巧妙应用

1.7K10

Go语言中指针用法

在Go语言中,指针是一种变量类型,它存储了另一个变量内存地址。使用指针可以提高程序效率,尤其是在处理大型数据结构时。以下是一些Go语言中指针用法示例:1....("Value of pa:", *pa) // 输出 a 值,通过指针 pa *pa = 20 // 通过指针修改 a 值 fmt.Println("Value of a after...指针作为函数参数通过将指针传递给函数,可以在函数内部修改外部变量值。...指针指针有时你可能需要使用指针指针,尤其是在涉及到动态内存分配时。...:", x) // 输出 x 值,已经修改}这些示例展示了Go语言中指针基本用法,包括如何定义指针、通过指针访问和修改变量、以及如何将指针作为函数参数传递。

4200

指针基本含义及其用法

3.指针         其实,在C语言中我们可以将内存单元编号,地址和指针看作是等价。但是常说指针并不是指针而是指针变量。...指针变量也是⼀种变量,这种变量就是用来存放地址,存放在指针变量中值都会理解为地址。...在上述代码中,我们看到pa类型是int*,这里pa左边写是int*,*说明pa是指针变量,前面的int是在说明pa指向整型类型对象。...通过这个逻辑我们理解C语言中指针,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针)指向对象,在这里就可以引入一个操作符叫做解引用操作符(*)。...5.总结         以上则是关于指针基本用法简单介绍了,在C语言中指针扮演者十分重要作用,内容也是十分繁杂这里就不再一一赘述了。

7910

C++ 指针常量与常量指针

而不管是指针常量还是常量指针他们区别其实就是const关键字位置,下面直接根据声明方式不同解释二者区别: 在只有一个关键字const情况下,声明有三种方式: //1 const int* p...所以被指向数据值到底能不能改变根本不由指针声明方式决定,而是该数据本身是常量还是变量。.../合法 p = &b;//不合法 以上就是所谓指针常量与常量指针所包含概念,在这里标个号: 1,2暂时称为第一类,3暂时称为第二类,那么第一类和第二类到底哪个叫做指针常量,那个叫做常量指针呢?...说实话我都不知道指针常量与常量指针叫法是不是够官方,我只能说概念非常混淆,而且其实它两个名字并不重要,关键是声明方式与作用区别。...上面说情况,对于指针修饰都只用了一个const关键字,还有两个const一起用时候,此时结果就是指针不能修改指向数据,指针不能指向别的地方: int a = 5; int b = 6; const

1.6K70

函数指针指针函数用法和区别

前言 函数指针指针函数,在学习 C 语言时候遇到这两个东西简直头疼,当然还有更头疼,比如什么函数指针函数、指针函数指针、数组指针指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难...二者区别 通过以上介绍,应该都能清楚理解其二者定义。那么简单总结下二者区别: 定义不同 指针函数本质是一个函数,其返回值为指针。 函数指针本质是一个指针,其指向一个函数。...写法不同 指针函数:int* fun(int x,int y); 函数指针:int (*fun)(int x,int y); 可以简单粗暴理解为,指针函数*是属于数据类型,而函数指针星号是属于函数名...再简单一点,可以这样辨别两者:函数名带括号就是函数指针,否则就是指针函数。 用法不同 上面已经写了详细示例,这里就不在啰嗦了。...另外,本文都是针对普通函数指针进行介绍,如果是C++非静态成员函数指针,其用法会有一些区别,在另外一篇博客中单独介绍,文章在这里 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

19720

C++指针c++指针使用注意点

c++指针使用注意点 避免野指针产生 “野指针成因主要有: 1)指针变量没有被初始化。...任何指针变量刚被创建时不会自动成为NULL指针,它缺省值是随机,它会乱指一气。所以,指针变量在创建同时应当被初始化,要么将指针设置为NULL,要么让它指向合法内存。...char *p; //此时p为野指针 2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法指针. char *p=new char[10]; //指向堆中分配内存首地址...e.指针做形参 即所谓地址传递,我们都知道地址传递方式,形参改变会导致实参改变,但要注意是,这里改变是指指针所指内容改变,而不是指针改变。...a指向,即改变指针值a值,先前是“abc”地址,后来是“cba”地址。

1.4K30
领券