我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
我一直在运行StyleCop而不是一些C#代码,并且它一直报告我的using指令应该在命名空间内.
是否存在将using指令放入命名空间而不是命名空间外的技术原因?
我来自Java背景,使用包,而不是命名空间.我习惯于将一起工作的类放在一起形成一个完整的对象,然后再从该包中重用它们.但现在我在使用C++.
你如何在C++中使用命名空间?您是为整个应用程序创建单个名称空间,还是为主要组件创建名称空间?如果是这样,如何从其他命名空间中的类创建对象?
在我们所有的C++课程,所有的老师总是把using namespace std;在之后#include在它们的S .h文件.从那时起,我觉得这很危险,因为在另一个程序中包含该标题我会将命名空间导入到我的程序中,可能没有意识到,打算或想要它(标题包含可以非常深入嵌套).
所以我的问题是双重的:我是对的,using namespace不应该在头文件中使用,和/或是否有某种方法来撤消它,例如:
//header.h
using namespace std {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
还有一个问题是:标题文件是否应该是#include相应.cpp文件所需的所有标题,只有那些标题定义所需的标题,并让.cpp文件#include为其余标题,或者没有,并声明它需要的所有内容extern?
问题背后的原因与上面相同:在包含.h文件时我不想要惊喜.
另外,如果我是对的,这是一个常见的错误吗?我的意思是在现实世界的编程和"真正的"项目中.
谢谢.
在下面的代码中,我定义了一个简单的log函数.在main我尽量不称呼它; 我打电话std::log.然而,我自己log被称为; 我看到"日志!" 在屏幕上.有谁知道为什么?我使用G ++ 4.7和clang ++ 3.2.
#include <iostream>
#include <cmath>
double log(const double x) { std::cout << "log!\n"; return x; }
int main(int argc, char *argv[])
{
std::log(3.14);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 有什么用using namespace std?
我想看看Layman的解释.
我一直在一堆不同的论坛上徘徊,我似乎每次都会看到这种情况.这是一个非常初学的问题.
我通常定义一个程序
#include<string>
using namespace std;
string x;
Run Code Online (Sandbox Code Playgroud)
我看到一堆代码示例将字符串定义为
std::string.
Run Code Online (Sandbox Code Playgroud)
这样做的目的是什么?是好的做法还是有一些功能?
我今天读到一些有趣的内容,说用户提供的类型(作为模板参数提供)调用swap的"标准"方式是......
using std::swap;
swap(something, soemthingelse);
Run Code Online (Sandbox Code Playgroud)
这样做的原因是使用的参数依赖查找要么使用一个swap在用户的命名空间或函数swap的std命名空间.这为我提出了一个感兴趣的问题.当我超载std::swap了我的课之一,我实际上已被定义它的std命名空间... namespace std { void swap(/*...*/){/*...*/} }.这种做法错了吗?我应该定义自己的swaps std或我自己的命名空间(以及为什么)?
#include <algorithm>
using namespace std;
int count = 0, cache[50];
int f(int n)
{
if(n == 2) count++;
if(n == 0 || n==1) return n;
else if (cache[n] !=- 1) return cache[n];
else cache[n]= f(n-1) + f(n-2);
return cache[n];
}
Run Code Online (Sandbox Code Playgroud)
我在gcc 4.3.4中使用了这个函数,并得到以下错误:
prog.cpp: In function ‘int f(int)’:
prog.cpp:38: error: reference to ‘count’ is ambiguous
Run Code Online (Sandbox Code Playgroud)
在我的本地机器(mingw32)上,我得到的错误是这个,虽然它不适合int 'cache[]'.
有什么理由吗?
c++ ×9
namespaces ×6
std ×3
.net ×1
c# ×1
c++-faq ×1
global ×1
header-files ×1
overloading ×1
stl ×1
string ×1
stylecop ×1
using ×1
variables ×1