C++学习笔记基础篇24——类的构造函数与析构函数

    科技2022-07-11  97

    构造函数

    class CStudent { public: char name[50]; char sex; int num; int age; CStudent(char* pname, char t_sex, int t_num, int t_age): sex(t_sex), num(t_num), age(t_age){ }; };

    析构函数

    析构函数不是用来删除对象的,而是当对象被删除的时候自动会被调用的,用来做一些对象被删除之前的清理工作。只要对象的生命周期结束,那么程序就会自动执行析构函数来完成这个工作的。

    #include <iostream> #include <string> using namespace std; class CStudent { public: char *p_name; char sex; int num; int age; CStudent(char* pname, char t_sex, int t_num, int t_age) :sex(t_sex), num(t_num), age(t_age) { p_name = NULL; int n_len = 0; if (pname) { n_len = strlen(pname); } if (n_len > 0) { p_name = new char[n_len + 1]; memset(p_name, 0, n_len + 1); strcpy(p_name, pname); } } ~CStudent(); }; CStudent::~CStudent() { if (p_name) { delete[] p_name; p_name = NULL; } } int main() { CStudent yangwang("yangwang", 'm', 1, 1); cout << yangwang.p_name<< endl; system("pause"); return 0; }

    关于析构函数仍然不是很理解,把这里的析构函数去掉也是能正常运行。

    Processed: 0.040, SQL: 8