程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 聲明和初始化辨析

C++ 聲明和初始化辨析

編輯:C++入門知識

在進行c++培訓時,發現有些概念對於初次接觸c++的同事可能有點難於理解,所以這裡做些總結,一方面方便同事閱讀,另一方面也是對自己技能的一個總結。     一、聲明(declaration):用於向程序表明變量的類型和名字,是用來將一個object、function、class或template的類型和名字告訴編譯器。由2部分組成:類型 + 標示符,標示符可以包含字符*、[ ]和(),表明這個名稱是類型的指針、數組或者返回類型的函數。   聲明並不帶有細節信息; 定義也是一種聲明; extern關鍵字可用來聲明變量而不定義,只是說明變量定義在程序的其他地方; 變量可以聲明多次,但只能定義一次 例子: char *pc; // 類型是pc,標示符是*pc,表明*pc是一個char。   extern float x;  // 對象聲明   int func(double num); //函數聲明   class Person; //類聲明   template<class T> class SmartPointer; //模板聲明   解讀復雜聲明的一種方法,遵循“聲明模仿使用”的原則逐步分解聲明。 例如:char * (*pfpc)(); * (*pfpc)(); // 是一個char (*pfpc)();    // 是一個指向char的指針 (*pfpc);       // 是一個返回char類型指針的函數 pfpc;           // 是一個指向返回char類型指針的函數的指針   二、定義(definition):是用來將細節信息提供給編譯器。 對於object而言,定義是編譯器為它分配內存空間; 對於function或funciton template而言,定義是提供函數體; 對於class或class template而言,定義是列出該class或template的所有成員; 例子: float x; //對象定義   //函數定義 int func(double num) {                         int t = static_cast<int>(num);      return t; }   //類定義 class Person { public:      Person();      ~Person();       String getName() const;     void setName(String name);      .... };   //模板定義 template<class T> class SmartPointer { public:     SmartPointer(T *p = 0);     ~SmartPointer();    T * operator->() const;    T& operator*() const;    ... };     備注:如果聲明中有初始化,那麼它其實是定義。       例如: externdouble pi = 0;       此時pi是定義,所以如果這樣用的話會出錯:       extern double pi = 0;       extern double pi = 1; // 2個extern且初始化  

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