码迷,mamicode.com
首页 > 编程语言 > 详细

C++中为啥ifstream不用new,用完还不用delete

时间:2014-08-11 10:09:32      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   使用   os   io   2014   ar   问题   div   

刚从C#开始转C++,有很多东西不理解,如下边这段代码:

  #include <fstream>
  #include <iostream>
  
  int main() {
     using namespace std;
     ifstream file;
     basic_ifstream <wchar_t> wfile;
     char c;
     // Open and close with a basic_filebuf
     file.rdbuf()->open( "basic_filebuf_close.txt", ios::in );
     file >> c;
     cout << c << endl;
     file.rdbuf( )->close( );
  
     // Open/close directly
     file.open( "iotest.txt" );
     file >> c;
     cout << c << endl;
     file.close( );
  
     // open a file with a wide character name
     wfile.open( L"iotest.txt" );
  
     // Open and close a nonexistent with a basic_filebuf
     file.rdbuf()->open( "ziotest.txt", ios::in );
     cout << file.fail() << endl;
     file.rdbuf( )->close( );
  
     // Open/close directly
     file.open( "ziotest.txt" );
     cout << file.fail() << endl;
     file.close( );
  }

下边是我跟大牛的聊天记录,疑问解开。(有个大牛帮解答疑问感觉就是爽啊!)

skyline wolf 2014/8/11 9:35:42 有2个疑问
ifstream file;
file.open( "iotest.txt" );
file.close( );
1.这里没有new就可以调用file的方法吗?
2.用完之后,调用file.close(),最终不用delete是为什么?

大牛 2014/8/11 9:33:55
自己再想想。new是干什么的

skyline wolf 2014/8/11 9:35:42
new是用来创建对象,在堆上分配内存空间的。你的意思是说这个ifstream是模板所以不用吗?
9:36:22
大牛 2014/8/11 9:36:22
new的理解对。这个对象是在栈上声明的

skyline wolf 2014/8/11 9:38:19
你的意思是说,如果一个对象在前边只是声名了一下,那么这个声名的变量就被分配在了栈上。如果声名的时候用new就分配在堆上。是这样吗?
9:38:40
大牛 2014/8/11 9:38:40
是的

大牛 2014/8/11 9:39:09
栈上的对象不用delete。

skyline wolf 2014/8/11 9:39:15
哦,那第二个问题就清楚了。第一个问题还是不解理,

skyline wolf 2014/8/11 9:39:37
栈上的对象不用delete我是知道的

skyline wolf 2014/8/11 9:40:16
哦,是不是C++使用了默认构造函数?

skyline wolf 2014/8/11 9:40:38
在调用 前初始化了这个对象
9:41:46
大牛 2014/8/11 9:41:46
是的
你在构造函数里面设个断点观察下

skyline wolf 2014/8/11 9:43:01
bubuko.com,布布扣3Q,清楚了。嗯,这个调试方法挺好的。 

C++中为啥ifstream不用new,用完还不用delete,布布扣,bubuko.com

C++中为啥ifstream不用new,用完还不用delete

标签:style   使用   os   io   2014   ar   问题   div   

原文地址:http://blog.csdn.net/lihb018/article/details/38487509

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!