zoukankan      html  css  js  c++  java
  • 类和对象(12)—— this指针

      首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。注:this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。

      this指针的类型取决于使用this指针的成员函数类型以及对象类型,(1)假如this指针所在类的类型是Stu_Info_Mange类型,(下面的测试用例中的类的类型,借来用用),并且如果成员函数是非常量的,则this的类型是:Stu_Info_Mange * const 类型,(2)既一个指向非const Stu_Info_Mange对象的常量(const)指针,假若成员函数是常量类型,则this指针的类型是一个指向constStu_Info_Mange对象的常量(const)指针。

    #include <iostream>
    using namespace std;
    
    class Test
    {
    public:
        Test(int a, int b)//===>Test(Test *this,int a, int b)
        {
            this->a = a;
            this->b = b;    
        }
        void printT()
        {
            cout << "a:" << this->a << endl;
            cout << "b:" << this->b << endl;
        }
    private:
        int a;
        int b;
    };
    
    int main(void) 
    {
        Test t1(1, 2);//===>Test(&t1,1,2);
        t1.printT();//===>printT(&t1);
    
        return 0;
    }
    若类成员函数的形参和类的属性,名字相同,通过this指针来解决;
    类的成员函数可通过const修饰。
  • 相关阅读:
    SlickEdit 中 GDB 调试时SIG32 使得无法跟踪的问题 解决方法
    ln与mount
    ubuntu12.04 的 root 用户显示 中文 和 默认显示中文的方法
    ASP.NET MVC控制器作用
    ASP.NET管道模型
    第二章MVC框架如何截获请求
    第一章MVC与WebForms处理请求的区别
    asp.net运行原理一
    一个通配符引起的错误
    关于权限
  • 原文地址:https://www.cnblogs.com/yuehouse/p/9811129.html
Copyright © 2011-2022 走看看