this指针

1、this概念

(1) This指针就是用于成员函数区分调用对象。

(2) This指针由编译器自动传递,无须手动传递,函数内部隐藏了this指针参数,本类类型的指针。

(3) 编译器不会为静态成员函数传递this指针。

2、this特点

1、非静态成员函数第一个隐藏参数就是this,this指向调用函数对象的常量指针,常函数。该函数不会去修改成员变量的值。

2、如果const写在函数后,const其实修饰的是this指针。如下图所示

class Person
{
public:
// Person * const this
// const Person * const this
void show() const
{ }
}

3、当形参与成员变量名冲突的时候,可以用来区分。

class Demo02
{
public:
Demo02(int a, int b)
{
this->a = a;
this->b = b;
} Demo02& get_self()
{
return *this;
} public:
int a;
int b;
};

4、如果一个对象被const修饰,常对象只能调用常函数。

class Demo03
{
public:
Demo03(int a, int b)
{
this->m_a = a;
this->m_b = b;
} // 不希望这个函数修改成员变量
// 可以将成员函数设置为常函数
// 大部分的成员变量不想修改,有个别的1个变量需要被修改
// mutable 修饰的成员变量,不受常函数限制
// const 修饰成员函数,本质上修饰的是 this 指针, Demo03 * const this;
// const Demo03 * const this;
// 常对象只能调用常函数
void show() const
{
// m_a = 100;
m_b = ;
cout << m_a << " " << m_b << endl;
} void print()
{
cout << m_a << " " << m_b << endl;
} public:
int m_a;
mutable int m_b;
}; void test02()
{
// 常量对象,常对象
const Demo03 d(, );
// d.print();
d.show();
}

最新文章

  1. (*p)++和*(p++)和*p++的区别
  2. jQuery 1.7_20120209 学习笔记
  3. 存根类STUB
  4. cocos2d-x实战 C++卷 学习笔记--第4章 win32平台下中文乱码问题
  5. 编译openjdk源码
  6. c#调用c++ dll(一)
  7. TCP与UDP网络编程总结(一)
  8. codevs 1519 过路费 最小生成树+倍增
  9. python遗传算法实现数据拟合
  10. mybatis的动态增删改查
  11. cocos2dx 3.3 C++工程添加lua支持
  12. [Swift]LeetCode1007. 行相等的最少多米诺旋转 | Minimum Domino Rotations For Equal Row
  13. Linux命令(十二)制作静态库和共享库
  14. 今天终于想明白为什么java包要倒着写
  15. 如何把js的代码写的更加容易维护(一)--面向对象编程
  16. 牛客多校第二场 G transform
  17. CH4912 Meteors
  18. oracle查询表结构语句
  19. NodeJS类型定义方式
  20. 【Linux_Unix系统编程】chapter5 深入探究文件IO

热门文章

  1. vc++中输入表的免杀
  2. Snagit卸载不彻底的问题
  3. 关于Mapper.xml生效的问题
  4. 8.Nginx基本概述
  5. GO基础之闭包
  6. 查看线上日志利器less
  7. Javascript对this对象的理解
  8. IL2CPP深入详解-总览
  9. MySQL在渗透测试中的应用
  10. python基础-元组(tuple)及内置方法