this指针

在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。

友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。

#include <iostream>using namespace std;class Box
{public:// 构造函数定义Box(double l=2.0, double b=2.0, double h=2.0){cout <<"Constructor called." << endl;length = l;breadth = b;height = h;cout  << this->length << endl ;cout  << this->breadth << endl ;cout  << this->height << endl ;}double Volume(){return length * breadth * height;}int compare(Box box){return this->Volume() > box.Volume();}private:double length;     // Length of a boxdouble breadth;    // Breadth of a boxdouble height;     // Height of a box
};int main(void)
{Box Box1(3.3, 1.2, 1.5);    // Declare box1Box Box2(8.5, 6.0, 2.0);    // Declare box2if(Box1.compare(Box2)){cout << "Box2 is smaller than Box1" <<endl;}else{cout << "Box2 is equal to or larger than Box1" <<endl;}return 0;
}/* 输出结果是
Constructor called.
3.3
1.2
1.5
Constructor called.
8.5
6
2
Box2 is equal to or larger than Box1
*/

指向类的指针

一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,必须在使用指针之前,对指针进行初始化。

#include <iostream>using namespace std;class Box
{public:// 构造函数定义Box(double l=2.0, double b=2.0, double h=2.0){cout <<"Constructor called." << endl;length = l;breadth = b;height = h;cout  << this->length << endl ;cout  << this->breadth << endl ;cout  << this->height << endl ;}double Volume(){return length * breadth * height;}int compare(Box box){return this->Volume() > box.Volume();}private:double length;     // Length of a boxdouble breadth;    // Breadth of a boxdouble height;     // Height of a box
};int main(void)
{Box Box1(3.3, 1.2, 1.5);    // Declare box1Box Box2(8.5, 6.0, 2.0);    // Declare box2Box *ptr ;   // 创建一个指向类的指针ptr = &Box1 ; // 保存Box1对象的地址cout << ptr->Volume() << endl; // 使用成员访问运算符来访问成员ptr = &Box2 ;cout << ptr->Volume() << endl;return 0;
}/* 输出结果是
Constructor called.
3.3
1.2
1.5
Constructor called.
8.5
6
2
5.94
102
*/

部分资料来源于菜鸟教程

C++——this指针相关推荐

  1. MIT 6.s081学习笔记

    MIT 6.s081学习笔记 introduction 计算机组织结构: 最底部是一些硬件资源,包括了CPU,内存,磁盘,网卡 最上层会运行各种应用程序,比如vim,shell等,这些就是正在运行的所 ...

  2. Go 知识点(19)— Go 语言中的野指针

    野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...

  3. C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针

    1. 什么是指针变量? 指针变量是专门有一个变量来存放指针. int main(int argc, char *argv[]) {int a = 10;int *p = &a; //通过取地址 ...

  4. Go 学习笔记(71)— Go 接口 interface (接口定义、接口实现、接口调用、值接收者、指针接收者)

    1. 接口的定义 接口是和调用方的一种约定,它是一个高度抽象的类型,不用和具体的实现细节绑定在一起.接口要做的是定义好约定,告诉调用方自己可以做什么,但不用知道它的内部实现,这和我们见到的具体的类型如 ...

  5. Go 学习笔记(70)— Go 变量声明、变量初始化、值类型变量赋值、指针类型变量赋值

    1. 变量声明 要单纯声明一个变量,可以通过 var 关键字,如下所示: var s string 该示例只是声明了一个变量 s,类型为 string,并没有对它进行初始化,所以它的值为 string ...

  6. c/c++中的函数指针和指针函数

    定义 1.指针函数,本质是函数,返回值为指针,形如,int *pfun(int, int),由于"*"的优先级低于"()"的优先级,所以等同于int *(pfu ...

  7. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

  8. 【数据结构】链表中的 指针,地址

    数据结构中跳过集合,直接开始线性结构 线性结构中单链表的操作涉及到给一个变量赋值地址,所以涉及到了指针 通过指针里的地址很方便找到节点 但指针这里绕了我很长时间,不论学了多少遍也不敢说把指针学会了 地 ...

  9. Qt实现 指针式时钟+动态时钟 (详细注释)

    先上效果图: 点击运行后首先是一个指针式时钟窗口,点击Digital Clock->可以跳转到数字时钟窗口,再点击Move Clock->可以还原为指针式时钟窗口 关于整个程序的讲解都在代 ...

  10. 【C语言】数组指针与指针数组的区分与应用

    这里以一道C语言题--输出矩阵两个对角线上的数(二维数组)为例 7-57 输出矩阵两个对角线上的数(二维数组) (6 分) 编写程序,将数据输入一个n * n二维数组中,输出矩阵两个对角线上的数.假设 ...

最新文章

  1. ubuntu18.04.4 环境变量设置 export path
  2. golang 使用 http socks5 代理
  3. spring boot(一)创建项目
  4. selector-UI元素状态伪类
  5. 高并发,分布式系统要点
  6. AtomicIntegerFieldUpdater字段原子更新类
  7. Java 注解指导手册 – 终极向导
  8. android butterknife 自定义view,ButterKnife用法详解.md
  9. mnist 转图像_解决MNIST图像分类问题
  10. 易语言超文本浏览框支持html5,易语言 修改ie版本:使超文本浏览框或互联网浏览器变成IE9 IE10 IE11等版本...
  11. EMI、EMS和EMC的区别
  12. Java快速入门笔记-02 Java基础(基本数据类型、变量和常量、运算符、数组、字符串)
  13. svn入门----如何使用svn
  14. Elastic 7.14.0 版推出业界首个免费开放的 Limitless XDR
  15. git 常用命令及解析 由浅入深
  16. ado控件连接mysql_Delphi中用ADO控件连接数据库例子
  17. 【基于Java+MySQL等技术的企业员工信息管理系统设计与实现】(源代码+数据库+论文+PPT+视频讲解部署 获取)
  18. 如何赚到20万人民币
  19. 金蝶K3WISE常用数据表
  20. MySQL慢日志超时时间设置_Mysql的慢日志

热门文章

  1. cordova sqlite
  2. 在64位Windows7上安装64位Oracle11g
  3. XPath element 格式
  4. 基于firefly rk3399 Android 7.1实现的ros服务小机器人
  5. Makefile常用函数总结
  6. c语言 枚举定义变量,C语言之枚举的定义以及测试
  7. 服务器宕机造成英国航空史上最严重的大混乱
  8. jquery 事件:2
  9. 【学习】Android开入门教程
  10. 互联网与CTI技术结合之商业应用