#include<iostream> #include<string> #include<memory> using namespace std; class man { public: man() { }; man(man &a) { this->age = a.age+1; } man(int a) { this->age = a; }; ~man() { cout << "执行了析构函数" << endl; }; public: int age; }; int main() { man xiaoming(23); man xiaohua(xiaoming);//拷贝构造函数(复制构造函数),这个和赋值构造函数一样,如果自己没有写的话,编译器也会自动创建一个。 //并且自己如果写了的话,编译器会优先使用自定义的函数。 man xia = xiaoming; //这个赋值构造函数(就是重载等号运算符)如果自己没有写的话,编译器会自动生成一个。 cout << "xiaoming的年龄为" << xiaoming.age << endl; cout << "xia的年龄为" << xia.age << endl; man *p = new(man); delete p;//这一行是执行了删除了开辟在堆上的内存,这样就会执行析构函数。 //创建智能指针 unique_ptr<man>pr(new man); //这个创建的一个智能指针,用来自动进行内存的管理,当pr的生命周期结束的时候,这个创建在堆上的man对象也就自动进行删除了。 pr->age = 10; cout << "pr的年龄为" << pr->age << endl; system("pause"); return 0; }