C++之this指针
来源:互联网 发布:新浪财经怎么下载数据 编辑:程序博客网 时间:2024/06/13 02:28
this指针是类的普通成员函数的隐含形参,只能在成员函数中使用,指向调用该成员函数的实例地址,当形参与成员变量重名时,我们可以通过this指针加以区分。
#include <iostream>using namespace std;class A {public: int a; A* set(int a){ this->a = a; return this; }};int main() { A a={0}; cout<<&a<<endl; cout<<a.a<<endl; cout<<a.set(1)<<endl; cout<<a.a<<endl; return 0;}
运行结果:
0x28ff2c00x28ff2c1
我们知道同一类的不同实例所调用的同一成员函数只有一份,保存在代码区,通过隐含形参this来对不同的类加以区分。在下面的代码中,我们声明一个类的空指针,并调用成员函数,此时,该指针并没有指向实例地址,即没有分配栈区内存,但我们依旧可以调用位于代码区的成员函数,只是在该函数中,this指针为NULL,若指向普通成员变量就会运行错误,但是可以指向静态成员变量,这是由于静态成员变量在程序启动时就分配空间,位于在全局数据,且静态成员变量只有一份拷贝,为所有实例共享。
#include <iostream>using namespace std;class A {public: int a; static int b; A* set(){// this->a = 1; // 错误 this->b = 1; return this; }};int A::b = 0;int main() { A *pa=NULL; cout<<pa<<endl; cout<<pa->b<<endl; cout<<pa->set()<<endl; cout<<pa->b<<endl; return 0;}
运行结果:
0001
我们知道,在静态成员函数中不能使用this指针,也不能访问非静态成员变量,当静态成员函数的形参与静态成员变量同名,我们可以通过<类名>::<静态成员变量>
的方式访问静态成员变量。
#include <iostream>using namespace std;class A {public: static int a; static void set(int a){ A::a = a; }};int A::a = 0;int main() { cout<<A::a<<endl; A::set(1); cout<<A::a<<endl; return 0;}
运行结果:
01
阅读全文
0 0
- 【C++】:C++之this指针的作用
- 【C/C++】this指针
- C++this指针、智能指针
- 【C++】this 指针
- C++this指针
- C++this指针
- C++this指针
- C++this指针
- C++this指针
- c++this指针
- C++this指针
- C++this指针
- C++this指针(二)
- C++-this指针
- c++this指针
- C++this指针
- C ++的this指针
- C++this指针详解
- https://vjudge.net/contest/161167#problem/F——dp
- Android 如何自定义CrashHandler与崩溃后自动重启
- 全行业的关键点是探索数据的价值 挖掘商业模式
- 操作系统概念(高等教育出版社,第七版)复习——第一章:导论
- 新闻客户端
- C++之this指针
- [树的点分治] [POJ2114] Boatherds
- SpringMVC实现服务器端推送
- Supervised Learning 002: k-Nearest Neighbor
- Python中map函数
- Server与Cilent
- 线程的分离和结合
- requirejs 教程(一)
- loadrunner 接口测试实例:天气接口,get&post