c++ - 什么是需要指定 "std"前缀?

标签 c++ std

我是编程的初学者,我经常看到许多使用前缀 std 的程序,如果它们使用任何 std 函数,如 std::coutstd::cin 等。我想知道它的用途是什么?它只是一种良好的编程方式还是还有更多?它对编译器有什么影响,还是可读性或什么?谢谢。

最佳答案

STL 类型和函数在名为 std 的命名空间中定义。 std:: 前缀用于在不完全包含 std 命名空间的情况下使用类型。

选项1(使用前缀)

#include <iostream>

void Example() {
  std::cout << "Hello World" << std::endl;
}

选项#2(使用命名空间)

#include <iostream>
using namespace std;

void Example() {
  cout << "Hello World" << endl;
}

选项 #3(单独使用类型)

#include <iostream>
using std::cout;
using std::endl;

void Example() {
    cout << "Hello World" << endl;
}

注意:包含整个 C++ 命名空间(选项 #2)还有其他含义,而不是不必为每个类型/方法加上前缀 std::(尤其是在头文件中完成时) .许多 C++ 程序员避免这种做法,而更喜欢 #1 或 #3。

关于c++ - 什么是需要指定 "std"前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239882/

相关文章:

c++ - 如何解决分配和释放不匹配的错误?

c++ - 类模板,允许用户定义类型 C++

c++ - 带有数据指针的可变参数模板

c++ - 将容器存储在 boost::variant 中

c++ - std::string 及其自动调整内存大小

c++ - 如何在 C++ 中将 operator= 与匿名对象一起使用?

c++ - 从字符串中解析复数,考虑语法变化

c++ - std::packaged_task 编译错误 w/gcc 4.6

c - 为什么要使用 'errno'?

c++ - std::set 迭代器自动 const