#include<iostream>
#include<string>
#include<cstdlib>
#include<graphics.h>
using namespace std;
class book
{
public:
book(string name)
{
m_name = name;
cout << m_name;
}
~book()
{
cout << m_name;
}
protected:
string m_name;
private:
};
void print(book name)
{
cout << "name" << endl;
}
int main()
{
//正常对象:构造顺序和析构是相反的
{
book A("string\n");
book B("B\n");
book C[3]{ {"C\n"},{"D\n"},{"E\n"} };
printf("\n");
}
cout << "new对象" << endl;
{
book* p = new book("A");
book C("B");
delete p;//delete 直接干掉u第项 直接调用析构函数
p = nullptr;
}
printf("\n");
//匿名对象在创建的时候,用完后直接死亡
{
book D("D");
book("R");//无名对象,过完这个行代码就执行结束,调用析构函数
book("H");
book E("T");
book("O");
//DRRHHTOOTD
}
//匿名对象转交所有权,也就是转正
cout << endl<<"匿名对象转正" << endl;
{
book A("A");
book B = book("B");//无名对象转正
book C("C");
//ABCCBA
}
cout << endl << "匿名对象当做函数参数" << endl;
{
print(book("K"));//创建一个临时对象
}
//静态对象最后被释放
{
book A("A");
static book Z("Z");//无论写到哪里,静态对象最后被释放
book E("T");
}
return 0;
}
C++构造顺序和析构顺序
最新推荐文章于 2024-06-21 16:13:27 发布