这篇文章指出,在2.2.1中C++已经不再使用typedefs、defines或预处理器。在C++中,include
是预处理器的一部分。那么import
是什么呢?
尽管名称为“import”,但Import并不会真正“导入”任何内容,它只是让你能够调用类而无需使用完整限定名。
更明确地说,如果我执行import java.util.ArrayList;
,现在我可以直接使用ArrayList
类来引用ArrayList
。如果我不这样做,我仍然可以使用该类,但必须将其称为java.util.ArrayList
。
如果您使用*
导入整个包,最糟糕的情况是可能存在名称冲突,因此您必须使用完全限定名来引用Java类,但运行时不会使用更多内存。
java.lang
中的类会自动“导入”。
Java 1.5引入了静态导入(static imports),它使程序员能够像在使用它们的类中声明它们一样引用已导入的静态成员。应该谨慎使用它们。 JUnit Assert方法的导入是一个可接受的用途。例如,使用传统导入:
import org.junit.Assert;
...
Assert.assertEquals(expected, actual);
使用静态导入:
import static org.junit.Assert.assertEquals;
...
assertEquals(expected, actual);
Import允许您使用未经限定的类名。例如,使用import java.util.ArrayList
,您可以在代码中使用未经限定的类型名称ArrayList
。如果没有导入语句,您将不得不始终使用完全限定的名称:java.util.ArrayList
。
还有静态导入,它将静态类元素带入编译单元的命名空间中。
java.util.ArrayList x = new java.util.ArrayList ();
避免这种冗长的编码风格的替代方法是使用导入语句。
import java.io.*;
import java.util.ArrayList;
ArrayList x = new java.util.ArrayList();
同时,理解他人的代码也是非常有帮助的。
import
语句用于在文件中引入包名,使其可被使用。它与 C 语言的 #include
完全不同。
using
。 - user545680using
是 C# 的一部分,而不是 C++。在 C/C++ 中,应该使用#include "..."
或者include <...>
:) - Bakudan