this指针在C++类和对象中是个很方便实用的关键字,可以简化对象成员属性的调用,使代码表达的含义更加准确;在之前的学习中我们都可以判断变量所占内存空间大小,那么我们创建的类对象所占的内存空间怎么计算呢?想知道this的妙用和类对象
c++的封装性:将数据 和 方法 封装在一起
数据 和 方法 是分开存储。
每个对象 拥有独立的数据.
每个对象 共享同一个方法。
成员数据和成员函数的存储方式
1、成员函数不占类的空间
2、静态成员数据不占类的空间
this指针的引入
class Data
{
public:
int m_num;
void setNum(int num)
{
m_num = num;
}
};
void test01()
{
Data ob1;
ob1.setNum(10);
cout<<"ob1.m_num = "<<ob1.m_num<<endl;
Data ob2;
ob2.setNum(20);
cout<<"ob2.m_num = "<<ob2.m_num<<endl;
Data ob3;
ob3.setNum(30);
cout<<"ob3.m_num = "<<ob3.m_num<<endl;
}
运行结果:
this指针概述
1、对象调用普通成员函数 在成员函数内部会产生一个指向该对象的this指针(this指针变量 是系统定义的)
2、this指针的目的:说明当前成员函数 是属于哪个对象的
3、静态成员函数内部 没有this指针
class Data
{
public:
int m_num;
void setNum(int num)
{
//m_num = num;
this->m_num = num;
}
};
void test01()
{
Data ob1;
ob1.setNum(10);
cout<<"ob1.m_num = "<<ob1.m_num<<endl;
Data ob2;
ob2.setNum(20);
cout<<"ob2.m_num = "<<ob2.m_num<<endl;
Data ob3;
ob3.setNum(30);
cout<<"ob3.m_num = "<<ob3.m_num<<endl;
}
运行结果:
注意:
1、this指针是隐含在对象成员函数内的一种指针
2、成员函数通过 this指针 即可知道操作的是那个对象的数据(定位对象)
3、静态成员函数内部没有this指针,静态成员函数不能操作非静态成员变量
(静态成员函数 是属于类 函数内部 没有this指针)
this指针的使用
1、当形参和成员变量同名时,可用this指针来区分
class Data
{
public:
int num;
//形参 和成员名相同
void setNum(int num)
{
//形参num
//成员num this->num
//num= num;//就近原则 形参num 赋值给 形参num
this->num = num;
//将形参num 赋值给 对象中成员num
}
};
2、在类的普通成员函数中返回对象本身(*this)(重要)
class MyCout
{
public:
MyCout& myCout(char *str)
{
cout<<str;
return *this;//*this 代表就是 当前调用该函数的对象
}
};
int main(int argc, char *argv[])
{
MyCout ob;
/*
ob.myCout("hehe");
ob.myCout("haha");
ob.myCout("xixi");*/
ob.myCout("hehe").myCout("haha").myCout("xixi");//ob.myCout("hehe") == ob
return 0;
}
运行结果:
3、如果成员数据和函数的形参 同名 必须使用this指针
class Data
{
public:
int a;//4B
public:
void setA(int a)
{
this->a = a;
return;
}
int getA(void)
{
return this->a;
}
};
4、this指针完成链式操作
class Printf
{
public:
Printf& myPrint(int value)
{
cout<<value<<" ";
//*this ==外界的对象
return *this;
}
};
void test01()
{
Printf ob;
ob.myPrint(10).myPrint(20).myPrint(30).myPrint(40);
cout<<endl;
}
到此这篇关于C++简明图解this指针的使用的文章就介绍到这了,更多相关C++ this指针内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:C++简明图解this指针的使用


- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言qsort()函数的使用方法详解 2023-04-26
- ubuntu下C/C++获取剩余内存 2023-09-18
- C++ 数据结构超详细讲解顺序表 2023-03-25
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- Qt计时器使用方法详解 2023-05-30
- Easyx实现扫雷游戏 2023-02-06
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09