c++ - 在构造函数和析构函数中打印值

标签 c++ constructor destructor

<分区>

我被困在下面的构造函数和析构函数代码中,我不理解结果。其中一个值应该是 7,为什么会有四个数字?帮助赞赏。

  class Package
  {
       private:
       int value;
public:
    Package()
    {
        value=7;
        cout<<value<<endl;
    }
    Package(int v)
    {
        value=v;
        cout<<value<<endl;
    }
    ~Package()
    {
        cout<<value<<endl;
    }
  };
  int main()
  {
     Package obj1(4);
     Package obj2();
     Package obj3(2);
     return 0;
  }

在控制台提示中显示

4
2
2
4

最佳答案

这个声明

 Package obj2();

是一个函数声明,没有参数,返回类型为 Package。

你可以这样写

 Package obj2 {};

如果您希望它是一个对象定义。

所以你只定义了两个对象

 Package obj1(4);
 Package obj3(2);

相应地构造函数打印

4
2 

析构函数的调用顺序与被调用的构造函数相反(后进先出 - 最后输入第一个输出)和输出

2
4

关于c++ - 在构造函数和析构函数中打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195969/

相关文章:

java - Stackoverflow 是由简单的代码引起的

c++ - 二维阵列两个方向之间的性能测试

c++ - 指向对象的指针 vector - 如何避免内存泄漏?

c++ - 如何加速OpenH264的解码器

c++ - 未调用析构函数

c# - 析构函数执行顺序?

c++ - 为数组中的每个对象调用析构函数

c++ - "Choose Your Own Adventure"中的 Switch 语句与 If 语句

constructor - ExtJS4:如何将参数传递给 initComponent

c++ - 如何使用初始数据和自定义比较器声明 STL::priority_queue?