欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++对象的构造与析构

程序员文章站 2022-03-23 12:08:43
...

    创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员不能在声明类时初始化。

    为了解决这个问题,C++编译器提供了构造函数,来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要其他用户来调用它,而是在建立对象时自动执行。

 

    构造函数和析构函数有关概念:

 

    构造函数

    1、构造函数定义及调用

        1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数

        2)构造函数在定义时可以有参数

        3)没有任何返回类型的声明

    2、构造函数的调用

        自动调用:一般情况下,C++编译器会自动调用构造函数

        手动调用:在一些情况下则需要手工调用构造函数

    析构函数

    1、析构函数的定义及调用

        1)C++中的类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数;语法为~classname();

        2)析构函数没有参数也没有任何返回类型的声明

        3)析构函数在对象销毁时自动被调用

    2、析构函数调用机制

        C++编译器自动调用

 

 

 

用法演示:

#include<iostream>

using namespace std;

class test

{

public:
          test()
          {
                    int a = 10;

                    p = (char*)malloc(100);

                    strcpy(p, "1111");

                    cout << "p="<<p << endl;

                    cout << "a="<<a<< endl;
          }
          ~test()
          {

                    if (p != NULL)
                    {

                              free(p);

                    }
                    cout << "我是析构函数" << endl;
          }

private:
          int a;

          char *p;
protected:

};

//先构造的函数后析构,后构造的函数先析构

void test1()
{
          test t1;

          cout << "*******************" << endl;

          test t2;
}
int main()
{
          test1();

          system("pause");
}