利用vscode学习c++时无法观察到析构函数的调用

本文探讨了在VSCode环境下C++程序中析构函数未被调用的原因及解决方法。通过调整代码逻辑,在析构函数内部加入system(pause);语句,确保了析构过程可见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题

在学习构造函数和析构函数时,发现自己编写的简单例子没有显示调用析构函数的结果

class person{
   public:
   person(){
      cout<<"111"<<endl;
   }
   ~person(){
     cout<<"222"<<endl;
     
   }
};
int main(){
  person p1;
  person p2;
  system("pause");
  
  return 0;  
}

2.原因

经过查阅网站资料以及大佬们以前的问题,发现是因为原因是vscode在main函数中添加了代码 system(“pause”);这句代码是用来防止程序一闪而过的,到了这句代码程序本身其实并没有全部执行完毕,类中的析构函数也就没有被调用,析构函数的作用:对象消亡时,自动被调用,用来释放对象占用的空间。在return 0;被执行前,p1p2对象仍然存在,没有消亡。此时执行system("pause");将程序暂停,自然看不到析构函数起作用,当你按下任意键后,程序继续向下执行return 0;,此时主程序结束,对象消亡,析构函数被调用,但是此时屏幕已经关闭,也就没法看到析构函数被调用。

3.解决方法

将system(“pause”);这句代码添加到析构函数中

class person{
   public:
   person(){
      cout<<"111"<<endl;
   }
   ~person(){
     cout<<"222"<<endl;
       system("pause");
   }
};
int main(){
  person p1;
  return 0;  
}

即可显示调用析构函数的结果。


Visual Studio 执行C++程序时析构函数不调用_XK_.xk的博客-优快云博客_析构函数不调用

 C++为什么相同的代码在VS里面可以看见析构函数,而在vscode里面看不到析构函数?_NINE_world的博客-优快云博客

对于VSCode的Linux开发,你可以使用CMake来进行项目管理和构建。CMakeLists.txt文件是CMake的配置文件,用于指定项目的构建规则和依赖关系。在CMakeLists.txt中,你可以设置编译参数选项,包括调试选项、优化级别、C++标准及警告等级。通过设置CMAKE_CXX_FLAGS变量,你可以添加编译参数选项。 在VSCode中,你可以创建一个main.cpp文件,并在其中引入Gun.h和Soldier.h头文件。在main函数中,你可以调用测试函数test(),该函数实例化了Soldier类,并通过addGun()方法添加了一个Gun对象,然后通过addBulletToGun()方法给Gun对象添加了一些子弹,最后通过fire()方法触发射击操作。 在Soldier.cpp文件中,我们实现了Soldier类的各个方法。构造函数初始化了_soldier的名称和指针为空。addGun()方法用于添加Gun对象的指针。addBulletToGun()方法用于给Gun对象添加子弹数量。fire()方法用于实现开火操作。析构函数负责释放指针。 总结来说,VSCode可以作为一个集成开发环境(IDE)在Linux上进行C++开发。你可以使用CMake管理项目并编写CMakeLists.txt文件来设置构建规则和编译参数选项。同,你还可以使用VSCode的调试功能来调试你的代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [linux下VScode完整项目开发流程 (详细配图/可测试代码)](https://blog.youkuaiyun.com/weixin_42322256/article/details/124208235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值