在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.
C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?
当我在C++中将一个类放在一起时,我几乎总是会做一些事情.
1)虚拟析构函数2)复制构造函数和赋值运算符(我根据名为Copy()的私有函数实现它们,或者将它们声明为私有,从而明确禁止编译器自动生成它们).
你发现什么东西几乎总是有用的?
如果我有几个头文件:让说1.h,2.h,3.h.假设所有三个头文件都#include <stdlib.h>包含其中一个包含文件.当我必须在C文件中使用所有3个头文件时main.c,它将#include <stdlib.h>在预处理器之后有3个副本.编译器如何处理这种冲突?这是一个错误还是会产生任何开销?
如果没有头部防护,会发生什么?
在C++中,我有一些头文件,例如:Base.h和一些使用的类Base.h:
//OtherBase1.h
#include "Base.h"
class OtherBase1{
// something goes here
};
//OtherBase2.h
#include "Base.h"
class OtherBase2{
// something goes here
};
Run Code Online (Sandbox Code Playgroud)
而且main.cpp,OtherBase由于重复的标题,我只能使用这两个类中的一个.如果我想要使用这两个类,OtherBase2.h我必须#include "OtherBase1.h"代替#include "Base.h".有时候,我只是想用OtherBase2.h而不是OtherBase1.h,所以我认为这是很奇怪的,包括OtherBase1.h在OtherBase2.h.我该怎么做才能避免这种情况以及包含头文件的最佳做法是什么?