vc编译器在进行编译的时候,是不是只编译cpp文件?因为所有的.h文件都被包含在了cpp文件当中,并且假如我在.h文件中用一个类声明一个对象时,我在.h文件中并没有包含这个类的头文件,而是在cpp文件中包含这个类的头文件
不知道我的想法对不对,哪位大侠给个解释

解决方案 »

  1.   

    h是做预处理的,即把它包含的声明,宏,定义之类的收集起来,作为编译cpp时引用,如果在h里声明了一个对象,但是声明不在这个h里,那编译能否通过就是要看前面收集的所有h和cpp里的声明是否包含了该对象的定义
      

  2.   

    楼上的意思我明白,我的问题是编译器在对一个工程编译时,是不是只编译这个工程的源文件也就是cpp文件,而对头文件只做预处理?
      

  3.   

    我的问题是编译器在对一个工程编译时,是不是只编译这个工程的源文件也就是cpp文件,而对头文件只做预处理?
    =============================
    是的并且假如我在.h文件中用一个类声明一个对象时,我在.h文件中并没有包含这个类的头文件,而是在cpp文件中包含这个类的头文件
    ==============================================================
    要注意cpp文件包含头文件的顺序呀。
      

  4.   

    248406869(笨笨)
    讲的非常清楚,搂主的理解也是对的。
    当然你甚至一个.h文件都可以不写,通常的做法是
    在头文件声明类,在.cpp中定义,如果用到了别的类类型,作为类成员,在头文件
    开头include,如果在成员函数中引用就在.cpp文件include即可。不要搞得太复杂!