Class 自毁器故障

Class 自毁器故障,class,oop,destructor,Class,Oop,Destructor,我最近读到,如果使用类的对象作为函数的接收参数,则必须自动创建对象的副本。因此,如果类中包含析构函数,则原始对象及其副本都将自动消失。然而,当我试图制作一个具有相同概念的小代码时,析构函数只激活了一次。什么会导致问题?提前谢谢 #include "stdafx.h" #include <iostream> using namespace std; class MyClass { int val; public: MyClass(int i) { val = i;

我最近读到,如果使用类的对象作为函数的接收参数,则必须自动创建对象的副本。因此,如果类中包含析构函数,则原始对象及其副本都将自动消失。然而,当我试图制作一个具有相同概念的小代码时,析构函数只激活了一次。什么会导致问题?提前谢谢

#include "stdafx.h"
#include <iostream>
using namespace std;

class MyClass {
int val;
public:

MyClass(int i)
{
    val = i;
    cout << "Constructor is in progress" << endl;
}

void SetVal(int i)
{
    val = i;
}

int GetVal()
{
    return val;
}

~MyClass()
{
    cout << "Destructer is in progress" << endl;
}
};


void Display(MyClass obj)
{
cout << obj.GetVal();
}

int main()
{
MyClass a(10);

cout << "Before display()" << endl;
Display(a);
cout << "After display()" << endl;

system("pause");
return 0;
}
#包括“stdafx.h”
#包括
使用名称空间std;
类MyClass{
int-val;
公众:
MyClass(int i)
{
val=i;

cout它在return语句之后调用。您看到的第一条消息来自复制的对象。当您到达
system(“pause”)
时,您的原始对象仍在作用域中,因此不会调用析构函数。它是在对return语句求值后调用的