当前位置: 首页> 娱乐> 明星 > 长沙疫情最新情况 最新消息_天元建设集团有限公司第一建筑工程公司工会委员会_大片网站推广_百度超级链

长沙疫情最新情况 最新消息_天元建设集团有限公司第一建筑工程公司工会委员会_大片网站推广_百度超级链

时间:2025/7/18 16:58:02来源:https://blog.csdn.net/jhbuy/article/details/145600144 浏览次数:0次
长沙疫情最新情况 最新消息_天元建设集团有限公司第一建筑工程公司工会委员会_大片网站推广_百度超级链

1、概念

1、this指针是一个特殊的指针,存储的对象的首地址,成员函数(类内)都隐含一个this指针。

2、类的成员函数(包括构造函数和析构函数)中都有this指针,因此this指针只能在类内部使用。

3、哪个对象调用成员函数,this指针就指向哪个对象,访问哪个对象的属性。虽然不用手写this指针,但是编译器都会使用this指针来调用成员。

#include<iostream>using namespace std;class Test{
private:string name;
public://this可以用来区分同名参数和成员属性Test(string name){this->name = name;}void test_this(){cout << this << endl;}void show(){//只有对象才能调用成员,非重名情况编译器自动添加thiscout << name << endl;cout << this->name << endl;this->test_this();}
};int main(){Test t1("admin");t1.show();return 0;
}

2、应用

1、区分同名参数和成员属性

        可以用this指针来区分同名参数和成员属性

2、类中成员的调用都是依赖于this指针的

        类中成员的调用都是依赖于this指针的,默认情况下由编译器自动添加

3、链式调用

        当返回值是对象引用时,可以返回*this,此函数支持链式调用。

支持链式调用的成员函数的特点:

1、返回值类型是当前类的引用

2、return后面是 *this

#include <iostream>using namespace std;class Test{
private:int num;
public:Test(int num)//1、可以用this指针来区分同名参数和成员属性{this->num=num;}//num 读接口int get_num(){//2、类中成员的调用都是依赖于this指针的,默认情况下由编译器自动添加return  this->num;//就是return num}//num进行add操作  3、链式调用//当返回值类型时对象引用时,可以返回*this,此函数支持链式调用Test& add(int n){num += n;return *this;}
};int main()
{Test t1(2);cout << t1.get_num() <<endl;//2
//    t1.add(3);
//    cout << t1.get_num() <<endl;
//    t1.add(4);
//    cout << t1.get_num() <<endl;
//    t1.add(100);
//    cout << t1.get_num() <<endl;//链式调用  可以对上述代码进行简写cout << t1.add(3).add(4).add(100).get_num() << endl;return 0;
}

附加面试题:new的过程(创建对象的过程):

  1. 内存分配
  • new运算符首先调用底层的内存分配函数(通常是operator new),为对象分配足够的内存空间。
  • 如果内存分配失败(例如,由于内存不足),operator new会抛出一个std::bad_alloc异常。
  1. 构造函数调用
  • 一旦内存分配成功,new运算符会在分配的内存上调用对象的构造函数来初始化对象属性。
  • 这意味着对象的成员变量会被初始化,并且任何在构造函数中编写的初始化代码都会被执行。
  1. 返回指针
  • 最后,将初始化过的对象的首地址赋值给this, 并将this返回。
关键字:长沙疫情最新情况 最新消息_天元建设集团有限公司第一建筑工程公司工会委员会_大片网站推广_百度超级链

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: