1.概要
问题?
在一个函数中new一个对象。
但是按照值传递传给另一个对象
结果怎样呢?
void fun(){
A* a = new A();
a->a = 5;
ma = *a;
delete a;
}
2.代码
#include <QCoreApplication>
#include <QDebug>
class A{
public:
A(){
qDebug()<<"A()";
a = 0;
}
~A(){
qDebug()<<"~A()";
}
int a;
};
class B{
public:
A ma;
void fun(){
A* a = new A();
a->a = 5;
ma = *a;
delete a;
}
void view(){
qDebug()<<ma.a;
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
B* b = new B();
b->fun();
b->view();
delete b;
return a.exec();
}
3.运行结果
A()//创建B对象的时候创建的
A()//在B的fun函数调用时候创建的
~A()//函数内delet a时候调用的
5// 值发生了变化,证明用了新的对象,复制过去的
~A()//B 析构的时候同时系统成变量