类和对象——对象特性——this指针的用途
在C++中成员变量和成员函数是分开存储的。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。
那么问题是:这一块代码是如何区分是哪个对象调用自己的呢?
C++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所指向的对象。
this指针是隐含在每一个非静态成员函数的一种指针
this指针不需要定义,直接使用即可。
this指针的用途
- 当形参和成员变量同名时,可用this指针来区分
class Person{public:Person(int age){this->age = age;}int age;
};
- 在类的非静态成员函数中返回对象本身,可使用return *this;
class Person{public:Person(int age){this->age = age;}Person& PersonAddAge(Person &p){this->age += p.age ; return *this;}int age;
};
void test02(){Person p1(10);Person p2(10);//链式编程 p2.PersonAddAge(p1).PersonAddAge(p1).PersonAddAge(p1);cout << p2.age << endl;}
类和对象——对象特性——this指针的用途相关推荐
- C++_类和对象_对象特性_This指针的用途_用来解决名称冲突_*this实现链式编程---C++语言工作笔记049
然后我们来看c++中的,this的使用,其实,我们知道java中也有this,这个c++中的this和java中的this 差不多.都是用来指代,对象的本身. 还是用代码去看看吧,c++中的this, ...
- C++阶段03笔记02【类和对象(封装、对象的初始化和清理、对象模型和this指针、友元、运算符重载、继承、多态)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 1.内存分区模型 2.引用 3.函数提高 4.类和对象 4.1.封装 4.1.1.封装的意义 --实例1:设计圆类 --实例2: ...
- 定义一个基本的银行账户类。在基本账户类的基础上派生出1年期定期账户、2年期定期账户、3年期定期账户和5年期定期账户。定义一个n个基类指针组成的数组,随机生成n个各类派生类的对象。让每个指针指向一个派生
定义一个基本的银行账户类.在基本账户类的基础上派生出1年期定期账户.2年期定期账户.3年期定期账户和5年期定期账户.定义一个n个基类指针组成的数组,随机生成n个各类派生类的对象.让每个指针指向一个派生 ...
- 类和对象的特性(C++谭浩强第三版笔记)
0.0 从程序结构上看: 基于过程的程序中:围绕功能进行的,函数是构成程序的基本部分,程序面对的是一个个函数. 面向对象的程序中:除主函数外,其他函数基本上都出现在"类"中 ...
- 【C++学习】类和对象--对象特性(2)
静态成员 静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员. 静态成员变量: 所有对象共享同一份数据 在编译阶段分配内存 类内声明,类外初始化 静态成员函数: 所有对象共享同一个 ...
- c++学习13 类与对象(二)c++对象模型和this指针和友元
类和对象 c++对象模型和this指针 成员变量和成员函数分开存储 在c++中类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象 #include<iostream> us ...
- 「地表最强」C++核心编程(五)类和对象--对象初始化和清理
环境: 编译器:CLion2021.3:操作系统:macOS Ventura 13.0.1 文章目录 一.构造函数和析构函数 1.1 构造函数 1.2 析构函数 1.3 示例 二.构造函数的分类及调用 ...
- python加上子类的特性_Python--面向对象三大特性
一.面向对象三大特性 什么是类的继承? 类的继承跟现实生活中的父.子.孙子.重孙子.继承关系一样,父类又称为基类. python中类的继承分为:单继承和多继承 1.继承 1 class ParentC ...
- 每天学一点Scala之 伴生类和伴生对象
1. object 相当于class的单个实例,因此,在object里声明的变量都是静态变量,静态方法 2. 在object里声明的变量,都是全局变量,也就是类的公共属性,或者类似于java中父类 ...
最新文章
- 【重置版】Android studio高效开发的秘密
- JavaScript-client、offset、scroll、定时器
- 学了阿里P8级架构师的7+1+1落地项目,转疯了!
- java cache缓存_Redis缓存失效策略思考
- mediacodec编解码少帧问题
- 有人提到田英章欧体田字格范本,说两句。
- java网络通信技术示例:简单的聊天小程序
- matlab绘制折线图
- 在matlab中开根号,请问,在matlab里面如果输入开方号(根号)?如9的开方怎么写?...
- Android中添加商品的购物车
- 2D Pixel Perfect:使用Unity创建任天堂红白机风格复古游戏
- Java多线程(超详解)
- 大四狗:我的java历程(续)
- 开源的调色板软件:焰火十二卷(Rickrack)
- 5000词学英语——DAY10
- 计算机网络技术的就业规划,计算机网络技术职业生涯规划书前言
- qDebug()用法
- 区块链技术创新应用势在必行 食品药品开启全链条溯源时代
- 三分钟教你学Git(二十七) - 修改多个commit
- C语言中如何转换汉中,行走,从汉中到刺桐
热门文章
- Deming管理系列(2)——怎样开发度量能力
- 【概率论系列学习】泊松分布和指数分布的关系
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块...
- 开博拉~~~庆祝一下,哈~~~
- 《BI那点儿事》Microsoft 决策树算法——找出三国武将特性分布,献给广大的三国爱好者们...
- string.Equals 比较2个字符串是否相同忽略大小写
- android蓝牙打印机
- Stream 和Byte[] 之间的转换
- CodeSmith输错license后的解决办法
- Win32 像素格式描述符学习