C类中六个默认成员函数详解,能否详细阐述其构造、析构、拷贝构造、移动构造、拷贝赋值和移动赋值的原理与实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2532个文字,预计阅读时间需要11分钟。
浅析+C++中通过引入this指针解决该问题:C++编译器为每个非静态成员函数添加了一个隐藏的this指针参数,指向当前对象。这使得成员函数可以直接访问和操作当前对象的成员变量和方法。
浅谈
先来说一下“this指针”:
C++中通过引入this指针解决该问题,暨:C++编译器给每个“非静态的成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问,只不过所有的操作对用户是透明的,暨用户不需要来传递,编译器自动完成。
说了这么多其实编译器在生成程序时获取对象首地址的信息。然后将获取的对象的首地址存放在了寄存器中,成员函数的其它参数都是存放在栈中。而this指针参数则是存放在寄存器中。类的静态成员函数(用static修饰的成员函数)因为没有this指针这个参数,所以类的静态成员函数也就无法调用类的非静态成员变量。
构造函数
构造函数是一个特殊的成员函数,名字与类名相同且不能有返回值,创建类类型时由编译器自动调用,在对象的生命周期内只调用一次。**主要任务是初始化对象。
↓下面是一个简单的构造函数(全缺省):
主函数初始化时如果无参则以缺省值0给成员变量赋值。
本文共计2532个文字,预计阅读时间需要11分钟。
浅析+C++中通过引入this指针解决该问题:C++编译器为每个非静态成员函数添加了一个隐藏的this指针参数,指向当前对象。这使得成员函数可以直接访问和操作当前对象的成员变量和方法。
浅谈
先来说一下“this指针”:
C++中通过引入this指针解决该问题,暨:C++编译器给每个“非静态的成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问,只不过所有的操作对用户是透明的,暨用户不需要来传递,编译器自动完成。
说了这么多其实编译器在生成程序时获取对象首地址的信息。然后将获取的对象的首地址存放在了寄存器中,成员函数的其它参数都是存放在栈中。而this指针参数则是存放在寄存器中。类的静态成员函数(用static修饰的成员函数)因为没有this指针这个参数,所以类的静态成员函数也就无法调用类的非静态成员变量。
构造函数
构造函数是一个特殊的成员函数,名字与类名相同且不能有返回值,创建类类型时由编译器自动调用,在对象的生命周期内只调用一次。**主要任务是初始化对象。
↓下面是一个简单的构造函数(全缺省):
主函数初始化时如果无参则以缺省值0给成员变量赋值。

