为了诱发C#/ Java语法,通过预处理命令重新定义C++访问修饰符会有什么影响?重新定义访问修饰符的影响是什么?
#include <iostream>
// The access modifiers are redefined here.
#define public public:
#define protected protected:
#define private private:
class Halo
{
public Halo(int xx)
{
x = xx;
}
public int getX()
{
return x;
}
private int x;
};
int main()
{
Halo* halo = new Halo(3);
std::cout << halo->getX();
return 0;
}
一个会是未定义的行为。我很确定它说在标准中重新定义关键字的地方。 – chris
#1重新定义关键字是(IIRC,可论证)未定义的行为。 #2这不是Java或C#,习惯它。 – GManNickG
C++不是Java。在这里遇到的一个细微问题是内联函数。你应该了解它们是如何工作的,以便你可以在适当的时候有意识地使用它们。 –