程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 正確使用#include和前置聲明(forward declaration)

正確使用#include和前置聲明(forward declaration)

編輯:關於C語言

正確使用#include和前置聲明(forward declaration) 

當我往工程裡加一個類,而且那個類又與工程裡的類相關,如有那個類型的成員變量。情況如下

//////A.h/////////// class A { ....... }; ////////B.h////////// class B:A { .... A member; } 結果,編譯就會出錯,說找不到類形A。解決的辦法是在B.h裡#include “A.h”。但是有時候不用#include “A.h”,只要在classB:A前加class A;就可以了。更嚴重的是不但要#include “A.h”,還要class A;。 起初覺得沒問題,因為這樣搞來搞去總會編譯通過的,而且不會讓程序變大,因為有#ifndef...#endif和#pragma once控制。直到有一次,我需要那些常量放到一個文件中“const.h”,然後include到其它需要它的類中,結果怎麼也編譯不成功(因為文件多了,而且每個文件都這樣互相include,把我也蒙了) 直到今天終於從《Effective C++》裡找到原理。現向大家分享一下,首先我以下面這個類結構作例子。(先不管我為什麼不加一個Woman,為什麼Man就有child,我只是作例子解說,絕沒有性別歧視。 \ 代碼如下: ////////////main.h////////////// #include "stdafx.h" #include "man.h" int main(){     Man m;     return 0; } ////////////Person.h///////////// #pragma once class Person { public:     Person(void);     ~Person(void); }; ////////Person.cpp/////////// #include "StdAfx.h" #include ".person.h" Person::Person(void){ } Person::~Person(void){ } /////////Man.h/////////// #pragma once #include "person.h" class Man : public Pe

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved