2012-03-11 70 views

回答

5

尖括号(< >)只是告诉编译器应该如何查找文件(而不是报价" ")。该文件的内容是无关的,它可以包含无论


#include <map>template <...> map尖括号不具有相关性任何。语法只是为了完全不同的目的使用相同的字符。

+0

我明白了,谢谢。 – 2012-03-11 18:29:13

1

它包括一个头文件。它可以包含模板,但也可能只包含#define语句,函数原型等

+0

谢谢。为什么我们使用尖括号,而不是#include“iostream.hh”? – 2012-03-11 18:28:16

+0

它们意味着不同的事物,这两个实现都定义了。如果''“'搜索失败,则执行回到'<>'的情况。在大多数实现中,''“'搜索当前目录,'<>'搜索系统头目录。查看C++规范部分16.2。 – 2012-03-11 18:31:22

+0

我看,谢谢,:) – 2012-03-11 18:52:07

0

至少给出最新的编译器处理模板的方式,是的。具体来说,大多数编译器需要在看到模板的定义之后才能让您实例化该模板。

直到C++ 03,(理论上)有一个export关键字可以消除这个要求,但是大多数编译器从来没有实现过它,甚至没有使用它的大部分库,无论如何。

0

根据该C++ 11标准中,头部包含此

#include <ios> 
#include <streambuf> 
#include <istream> 
#include <ostream> 

namespace std { 

    extern istream cin; 
    extern ostream cout; 
    extern ostream cerr; 
    extern ostream clog; 

    extern wistream wcin; 
    extern wostream wcout; 
    extern wostream wcerr; 
    extern wostream wclog; 

} 

,其包括大量的模板。

早期的标准是不是正是标头<iostream>必须包括明确的,只是它应该宣布流。

1

选择字符的主要原因之一是文件名中通常不会使用<>",因此它们会为分隔文件名提供非常好的字符。

使用类似的逻辑,在C++标识符中都不会出现<>,所以可以使用这些字符来分隔模板参数。

所以,而对于<>选择的逻辑是相似的,分隔的实际名称是不相关的。

相关问题