在用new delete操作类指针时,会自动调用类的构造和析构函数。而 molloc 与 free不会自动调用。
#include<iostream>
class myclass
{
public:
int x=1;
int y=2;
public:
void printxy();
myclass(int a, int b) :x(a), y(b)
{
std::cout << "class build";
}
myclass()
{
}
~myclass()
{
std::cout << "class 销毁";
}
};
void myclass::printxy()
{
std::cout << x << " " << y << std::endl;
}
myclass class1(10,11);
myclass class2(11,12);
void change1(myclass **pp)
{
*pp = &class2;
}
void change2(myclass * &p)
{
p = &class1;
}
void main3()
{
//myclass *p = (myclass *)malloc(sizeof(myclass));
//free(p);//没有调用析构函数
//new delete
myclass *p = new myclass;
delete p;
std::cin.get();
}
void main2()
{
myclass *p=&class1;
//p = &class2;
p->printxy();
myclass **pp(&p);
change1(pp);//change1(&p);
p->printxy();
change2(p);
p->printxy();
std::cin.get();
}
void main1()
{
myclass *p=(new myclass(3,4));
p->printxy();
myclass class1(10, 20);
myclass **pp(&p);
(*pp)->printxy();//一级类指指针
(**pp).printxy();//0级类指针
std::cin.get();
}