linux系统中C++中构造与析构函数以及this的使用方法_析构函数

目录

第一:构造函数与析构函数

第二:this指针

第一:构造函数与析构函数

       什么是构造函数?构造函数在对象实例化时被系统自动调用,仅且调用一次,构造函数出现在哪里?前面学过类,实际上定义类时,如果没有定义构造函数和析构函数,编译器就会生成一个构造函数和析构函数,只是这个析构函数和构造函数什么事情也不做,所以我们不会关注到这一点。

构造函数的特点如下:

        1、构造函数必须与类同名;

        2、可以重载;

        3、没有返回类型,即使是void也不行;

        什么是析构函数?与构造函数相反,在对象结束其生命周期时系统自动执行析构函数。实际上定义类时,编译器会生成一个析构函数。

         1、析构函数的格式为 ~类名();

         2、调用释放内存(资源);

         3、~类名()不能加参数;

         4、没有返回值,即使void也不行

          通过简单的例子来说明构造函数和析构函数的使用方法:

#include <iostream>
#include <string>
using namespace std;

class Dog
{
    public:
       Dog();
       ~ Dog();
};


int main()
{
    Dog dog;
    cout<<"构造与析构函数示例"<<endl;
    return 0;
}

Dog::Dog()
{
    cout<<"构造函数执行!"<<endl;
}

Dog::~Dog()
{
    cout<<"析构函数执行!"<<endl;
}

      分析:其实执行的结果可以预测,在对象实例化时会调用构造函数,所以构造函数先执行,然后再执行main()函数中的内容,继续执行cout<<"构造函数与析构函数",最后结束的时候运行析构函数。

第二:this指针


        一个类中的不同对象在调用自己的成员函数时,其实它们调用的是同一段函数代码,那么


成员函数如何知道要访问哪个对象的数据成员呢? 没错,就是通过 this 指针。每个对象都拥有一个 this 指针, this 指针记录对象的内存地址。在 C++ 中, this 指针是指向类自身数据的指针,简单的来说就是指向当前类的当前实例对象。


关于类的 this 指针有以下特点:


(1) this 只能在成员函数中使用,全局函数、静态函数都不能使用 this 。实际上,成员函数


默认第一个参数为 T * const this 。也就是一个类里面的成员了函数 int func(int p) , func 的原


型在编译器看来应该是 int func(T * const this,int p) 。


(2) this 在成员函数的开始前构造,在成员函数的结束后清除。


(3) this 指针会因编译器不同而有不同的放置位置。可能是栈,也可能是寄存器,甚至全


局变量。


#include <iostream>
#include <string>
 using namespace std;

class Dog
{
 public:
 string name;
 void func();
};

 int main()
 {
 Dog dog;
 dog.func();
 return 0;
}

 void Dog::func()
 {
   this->name = "旺财";
   cout<<"小狗的名字叫:"<<this->name<<endl;
}

分析:this只能能够在成员函数中使用,并可以指向自身数据。