我不确定会发生什么,但请采取以下措施:
class A{
}
-
class B{
#include "A.h"
}
-
class C{
#include "B.h"
}
现在,如果我要在C类中编写代码,那么它是否也会自动包含A类?据我所知,#include基本上就是在现场复制整个文件。
任何人都可以详细说明这个吗?
我正尽力使用班级转发。但有时我根本不能。
编辑:
上面的类不在同一个文件中。想象一下他们分开了。
编辑II: 让我把它放在更多的背景下。
让我说我正在创建一个包含类B的新类,但后来我声明了一个类型为A的变量。这似乎是编译的,即使我从未将A包含在类中。这就是它在C ++中的用途吗?
答案 0 :(得分:2)
这基本上会在类B
内声明一个名为A的嵌套类。
include
指令应该位于文件顶部以外的任何其他位置的情况非常罕见,并且通常与您拥有的目的完全不同。
如果我正确理解您的文件层次结构,则相当于:
//A.h
class A{
};
//B.h
class B{
class A{
};
};
//C.h
class C{
class B{
class A{
};
};
};
答案 1 :(得分:1)
你是对的,预处理器只是复制标题。如果愿意,可以把它想象成一个长宏。
答案 2 :(得分:1)
#include
指令只是告诉编译器假装指定文件中的文本已写入#include
指令所在的位置。它与范围,语法或其他任何内容无关。这只是文字。
如果没有看到A.h和B.h的内容,就不可能再详细说明那些#include
指令的效果了。