#include 与 #include 有何区别

请问 #include <memory.h> 与 #include <memory> 有何区别?

楼主zahuifan(杂烩饭) 2002-03-09 17:43:55 在 C++ Builder / 基础类 提问

请问   #include   <memory.h>   与   #include   <memory>   有何区别?  
  为什么我用    
   
  #include   <memory>  
  main()  
  {  
        auto_ptr<int   *>   a;  
  }  
   
  正确通过编译,而  
   
  #include   <memory.h>  
  main()  
  {  
        auto_ptr<int   *>   a;  
  }  
   
  则出现错误"找不到   "auto_ptr"   "   ?  
  问题点数:20、回复次数:9Top

1 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-09 18:19:03 得分 3

memory.h是老的头文件。  
  memory是新的C++头文件。在名字空间std中。Top

2 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-09 18:20:21 得分 3

auto_ptr只能指针是memory中定义的。  
  memory.h没有,所以出错啊。  
  好像应该有个using   std;(第一个程序)Top

3 楼zzzsssccc(今天正为明天后悔)回复于 2002-03-09 21:05:10 得分 0

一样Top

4 楼ken_henderson( )回复于 2002-03-09 21:26:01 得分 3

用#include   <memory>   要加一句using   namespace   std;  
  它是新的C++标准库Top

5 楼tg123(T.G.)回复于 2002-03-09 21:57:53 得分 0

文件不一样Top

6 楼soonphone(好好想想)回复于 2002-03-09 22:24:32 得分 7

可以好好看看:我自己有时也记不住  
   
  旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。  
   
  ·   新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)  
   
  ·   标准C头文件如<stdio.h>继续被支持。头文件的内容不在std中。  
   
  ·   具有C库功能的新C++头文件具有如<cstdio>这样的名字。它们提供的内容和相应的旧C头文件相同,只是内容在std中。  
   
  所有这些初看有点怪,但不难习惯它。最大的挑战是把字符串头文件理清楚:<string.h>是旧的C头文件,对应的是基于char*的字符串处理函数;<string>是包装了std的C++头文件,对应的是新的string类(看下文);<cstring>是对应于旧C头文件的std版本。如果能掌握这些(我相信你能),其余的也就容易了。  
   
  Top

7 楼belief888(信仰)回复于 2002-03-10 00:39:15 得分 2

没什么。只是一个是新标准,一个不是。看看楼上的人,说的很全。Top

8 楼zahuifan(杂烩饭)回复于 2002-03-10 17:07:13 得分 0

十分感谢各位高手对小弟的帮助。  
  请问   <memory.h>   与   <memory>   是否是两个文件?  
  <memory>   在什么位置?(如何才能打开它?)Top

9 楼shornmao(毛豆子[死猫])回复于 2002-03-10 18:21:03 得分 2

memory和memory.h应该是两个不同的文件,按照C++标准,memory.h文件的实现应该是类似:  
  #include   <memory>  
  using   namespace   std;  
  至于memory文件的位置,去include目录下找一找,可能是stl子目录。 

你可能感兴趣的:(#include 与 #include 有何区别)