在类中私有定义该类?

时间:2016-06-28 16:07:41

标签: c++ c-preprocessor

如果我写这样的东西:

class myclass
{
#define ADD(x,y) {return x+y}

public:

}

是我班级的私人定义吗?

请注意,我在* .hpp中定义它,并且我想确保如果我将此hpp包含到其他源代码中,则其他源代码无法访问此定义。

有没有比在C ++中使用#define可以做同样事情更好的解决方案?

使用怎么样?是不是我的班级私人?

class myclass
{
using std;

public:

}

2 个答案:

答案 0 :(得分:6)

它不是,也永远不会。

所有预处理器命令(#...)在读取和分析源代码之前都会被处理,所以在你放置它们的任何地方都没关系;只有序列(如果它们相互构建)和它们的使用相对位置(之前/之后)很重要。

您可以将预处理器命令想象为“从此处查找/替换”。

答案 1 :(得分:0)

您可以使用#undef来限制#define的范围。也许你甚至可以用它来限制你自己没有创建的定义的范围。