C++笔记(二)--this指针

Day:2018.1.15
● this指针的几点注意:

1.this指针无需操作者定义,是由编译器自动产生的;
2.同一个类的两个对象的this指针是指向各自对象的首地址的;
3.当成员函数的参数名与数据成员同名时,便是this指针大展拳脚的时候了;
4.this指针也是指针类型,所以在32位编译器下也占用4个基本的内存单元;

● this指针示例演示1

Array.cpp文件下(完整代码)

#include <iostream>
using namespace std;
class Test{
    public:
        Test(int num);
        ~Test();
        void set(int num);
        int get();
        void print();
    private:
        int num;
};
Test::Test(int num){
    //由于函数名与数据成员名相同,便是this指针出现的时候了!
    this->num = num;
};
Test::~Test(){
    
};
void Test::set(int num){
        //由于函数名与数据成员名相同,便是this指针出现的时候了!
        this->num = num;  
};
int Test::get(){
    return num;
}
void Test::print(){
    cout << "num = " << num << endl;
}
int main()
{
    Test t(100);
    cout << "num = " << t.get() << endl;
    return 0;
}

编译结果:


this01.png
● this指针示例演示2

Array.cpp文件下(完整代码)

#include <iostream>
using namespace std;
class Test{
    public:
        Test(int num);
        ~Test();
        void set(int num);
        int get();
        Test& print();
    private:
        int num;
};
Test::Test(int num){
    this->num = num;
};
Test::~Test(){
    
};
void Test::set(int num){
    this->num = num;
};
int Test::get(){
    return num;
}
//此处注意区别:利用了&引用 
Test& Test::print(){
    cout << "num = " << num << endl;
    return *this;
}
int main()
{
    Test t(100);
    t.print().set(50);
    cout << "num = " << t.get() << endl;
    return 0;
}

编译结果:


this02.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,251评论 25 708
  • 生活中,有很多形容幼儿的句子,比如:幼儿是祖国的花朵,幼儿是初升的太阳,但是对于幼儿教师来说,我觉得幼儿更...
    纯净pureness阅读 220评论 0 0
  • 张量是汉高祖刘邦的重要谋臣,他曾成功的帮助刘邦击败了楚汉战争中最强劲的对手就是西楚霸王项羽。 在我眼中张良是诚信的...
    千玺的艳芬阅读 284评论 1 0
  • 什么是运营? 运营分类 内容运营 活动运营 用户运营 via @惜别 读书笔记|从零开始做运营(入门篇)
    古小缺阅读 1,386评论 9 80