在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.
C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?
我在使用std :: list <std :: string>时偶然发现Stack Overflow问题内存泄漏与std :: string,其中一条评论说:
停止使用
new这么多.我看不出你在任何地方使用新的任何理由.您可以使用C++中的值创建对象,这是使用该语言的巨大优势之一.您不必在堆上分配所有内容.不要像Java程序员那样思考.
我不太确定他的意思是什么.为什么要尽可能经常地用C++中的值创建对象,它在内部有什么区别?我误解了答案吗?
在许多C/C++宏中,我看到宏的代码包含在看似无意义的do while循环中.这是一些例子.
#define FOO(X) do { f(X); g(X); } while (0)
#define FOO(X) if (1) { f(X); g(X); } else
Run Code Online (Sandbox Code Playgroud)
我看不出它do while在做什么.为什么不在没有它的情况下写这个?
#define FOO(X) f(X); g(X)
Run Code Online (Sandbox Code Playgroud) 我一直在研究C++ 11的一些新功能,我注意到的是在声明变量时使用的双符号,例如T&& var.
首先,这只野兽叫什么?我希望谷歌允许我们搜索这样的标点符号.
究竟是什么意思?
乍一看,它似乎是一个双重参考(如C风格的双指针T** var),但我很难想到一个用例.
我无法理解之间的差异std::string和std::wstring.我知道wstring支持Unicode字符等宽字符.我有以下问题:
std::wstring用完std::string?std::string保存整个ASCII字符集,包括特殊字符吗?std::wstring由所有流行的C++编译器的支持?const这些声明中的含义是什么?该const混淆了我.
class foobar
{
public:
operator int () const;
const char* foo() const;
};
Run Code Online (Sandbox Code Playgroud) 我正在寻找有关基本C++类型大小的详细信息.我知道这取决于架构(16位,32位,64位)和编译器.
但是有没有C++的标准?
我在32位架构上使用Visual Studio 2008.这是我得到的:
char : 1 byte
short : 2 bytes
int : 4 bytes
long : 4 bytes
float : 4 bytes
double: 8 bytes
Run Code Online (Sandbox Code Playgroud)
我试图找到,但没有成功,可靠的信息,表述的大小char,short,int,long,double,float(和其他类型的我没想到的),在不同的体系结构和编译器.
为什么sizeof操作员返回的结构尺寸大于结构成员的总尺寸?
c++-faq ×10
c++ ×9
c ×3
declaration ×2
c++11 ×1
const ×1
definition ×1
heap ×1
inheritance ×1
new-operator ×1
sizeof ×1
standards ×1
string ×1
struct ×1
terminology ×1
unicode ×1
wstring ×1