美文网首页
C++<第十五篇>:构造函数和析构函数

C++<第十五篇>:构造函数和析构函数

作者: NoBugException | 来源:发表于2022-01-20 18:43 被阅读0次
一、构造函数

当一个实例(对象)被创建时,构造函数就会被调用,那么构造函数的作用是什么呢?
当建立一个对象时,常常将某些初始化操作放在构造方法中执行,比如:

Person.h 文件:

Person(); // 构造方法

Person.cpp文件:

Person::Person() {
    mIndex = 0;
}

构造函数没有类型、没有返回值、没有修饰符,以下代码是构造函数的声明:

Person(); 
Person(int a); 
Person(int a, char b); 
Person(int a, char b, float c); 

Person()属于默认构造函数,即使代码中不写,当Person实例被创建时,也会被默认执行。

当执行以下代码时,Person被创建:

Person p;

当构造方法中存在参数时,代码如下:

Person.h 文件:

Person(int index, char name[25], short age); // 构造方法

Person.cpp文件:

Person::Person(int index, char name[25], short age) {
    mIndex = index;
    strcpy_s(mName, strlen(name) + 1, name);
    mAge = age;
}

调用:

int index = 2;
char name[] = "wangwu";
short age = 14;

Person person(index, name, age);

cout << person.getIndex() << endl;
cout << person.getName() << endl;
cout << person.getAge() << endl;
二、析构函数

构造函数和析构函数时类体中定义的比较特殊的两个成员函数,他们都没有返回值。
析构函数名标识符就是在类名前面加“~”符号。

构造函数主要是用来在对象创建时,给对象中的一些数据成员赋值,即初始化对象。
然而,析构函数恰恰相反,它的功能是用来释放一个对象,在对象删除前,用它来做一些清理工作。

构造函数如下:

char* mName;

Person::Person() {
    mName = new char[20];
}

析构函数如下:

Person::~Person() {
    delete[] mName;
}

构造函数最先被执行,为 mName 分配空间;
析构函数最后被执行,将 mName 的空间释放;

[本章完...]

相关文章

  • 简介python中的析构函数与构造函数

    python的构造和析构函数为固定的名字。 构造函数 析构函数 不像c++中那样构造函数和析构函数是类名字。并且在...

  • c++学习笔记2(GeekBand)

    拷贝构造、拷贝赋值和析构 c++中有Big Three三个特殊的函数,他们就是拷贝构造函数,拷贝赋值函数和析构函数...

  • c++构造函数,析构函数,调用顺序

    最近,在看c++,聊一个简单的话题吧。构造函数,析构函数,及调用顺序。 构造函数, 构造函数,析构函数,如上代码所...

  • [C++之旅] 13 析构函数

    [C++之旅] 13 析构函数 析构函数与构造函数相反,构造函数在实例化一个对象时调用,而析构函数在销毁一个对象时...

  • 2002.C++BASE-构造函数、析构函数

    转:C++继承中构造函数、析构函数调用顺序及虚析构函数 1.构造函数 大家都知道构造函数里就可以调用成员变量,而继...

  • windows逆向3

    VC 程序内存和编译的一些特征C++ 构造函数C++ 成员函数C++ 析构函数C++ 全局对象的构造C++ 全局对...

  • Effective C++笔记

    2.构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 默认构造函数和析构函数主要是给编译器一个地方...

  • Python:重载构造方法

    对于使用过C++的人来说,构造函数与析构函数不会陌生。构造函数在对象创建时被调用,析构函数在对象被销毁时被调用。而...

  • 构造函数和析构函数

    鸡啄米:C++编程入门系列之十四(类与对象:构造函数和析构函数)

  • C++ 构造和析构函数

    C++ 构造和析构函数 构造函数 类的设计者通过提供一个构造函数(constructor)的特殊函数来保证每个对象...

网友评论

      本文标题:C++<第十五篇>:构造函数和析构函数

      本文链接:https://www.haomeiwen.com/subject/heojhrtx.html