struct chainNode
{
int element;
chainNode* next;
//默认构造函数
chainNode() { cout << "默认的构造函数"; };
chainNode(int element) {
this->element = element;
}
chainNode(int element, chainNode* next) {
this->element = element;
this->next = next;
}
};
#include <iostream>
#include"chainNode.h"
using namespace std;
int main()
{
//使用重载的构造函数1:对element数据成员初始化
chainNode first = {5};
cout << first.element;
//默认的构造函数:element,next都未初始化
chainNode two;
//使用重载的构造函数2:element,next都初始化
chainNode three = { 10,&first };
cout << three.element << endl;
cout << three.next << " ==" << &first << endl;
}
我们知道构造函数是来初始化成员变量的,重载构造函数提供了初始化数据成员的不同方式,更随心所欲。
那么结构体有析构函数吗?试一下。
struct chainNode
{
int element;
chainNode* next;
//默认构造函数
chainNode() { cout << "默认的构造函数"; }
chainNode(int element) {
this->element = element;
}
chainNode(int element, chainNode* next) {
this->element = element;
this->next = next;
}
~chainNode() { cout << "析构函数调用了"; }
};
再运行一下,看结果。
说明结构体也有析构函数。卧槽。大吃一🐋
那结构体应该也有默认拷贝函数吧!
chainNode(const chainNode& chainnode) {
cout << "默认拷贝函数来了" << endl;
}
main函数中加 chainNode four = three;
可见它也有。