20.构造函数是在我们定义一种类型的变量时会自动被调用的函数。而且我们可以定义多个同名的构造函数--函数重载(参数不一样或者没有参数)。
#includeusing namespace std; //构造函数:函数名和类名一样,而且没有返回函数 struct Date { int d,m,y; //如果没有定义任何构造函数,那么编译器会自动生成一种构造函数 Date(){ d=1; m=1; y=2000; cout<<"default constructor!"< 注意:如果没有定义任何构造函数,那么编译器会自动生成一种构造函数。
21.在构造函数中剩下的内存没有释放掉,在销毁的时候需要把占用的内存释放掉就要用到析构函数。
#define _CRT_SECURE_NO_WARNINGS #include#include using namespace std; struct student { char *name; int age; student(char *n= "no_name", int a = 15){ int len = strlen(n); name = new char[len+1]; //name指针没有指向任何一块内存,所以需要分配一块内存 //还有结束字符,需要len+1 strcpy(name,n); age = a; std::cout << "constructor!" << std::endl; } virtual ~student() { std::cout << "destructor!" 注意1:delete[] name;是为了防止内存泄漏。
注意2:一般初始化对象的时候是在构造函数里进行,当对象销毁的时候要把内存还给操作系统。
注意3:构造函数需要提供参数,要用参数来进行构造申请资源,析构函数不需要提供参数。



