程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> error: expected constructor, destructor, or type conversion before '.' token,expectedconstructor

error: expected constructor, destructor, or type conversion before '.' token,expectedconstructor

編輯:C++入門知識

error: expected constructor, destructor, or type conversion before '.' token,expectedconstructor


今天寫代碼是遇到這樣一個問題error: expected constructor, destructor, or type conversion before '.' token;立馬網上查,原來是說不能再全局域進行不能用於賦值、運算、調用函數等,只能做變量的聲明和初始化變量。

下面是我出錯的代碼:

#include <iostream>

int a[100];

memset(a,0,sizeof(a));//出錯的地方,不能再全局域對變量進行賦值操作

int main(){

//doing something

}

 

 

說道這裡我們不能不清楚 初始化、聲明、定義的區別:以下轉載他人的一遍總結文章

C++聲明和定義的區別

 

《C++Primer》第四版 2.3.5節中這麼說到:

①變量定義:用於為變量分配存儲空間,還可為變量指定初始值。程序中,變量有且僅有一個定義。

②變量聲明:用於向程序表明變量的類型和名字。

③定義也是聲明:當定義變量時我們聲明了它的類型和名字。

④extern關鍵字:通過使用extern關鍵字聲明變量名而不定義它。

 

1.定義也是聲明,extern聲明不是定義,即不分配存儲空間。extern告訴編譯器變量在其他地方定義了。

例如:extern int i; //聲明,不是定義

             int i; //聲明,也是定義           

 

2.如果聲明有初始化式,就被當作定義,即使前面加了extern。只有當extern聲明位於函數外部時,才可以被初始化。

例如:extern double pi=3.1416;  //定義

 

3.函數的聲明和定義區別比較簡單,帶有{ }的就是定義,否則就是聲明。

例如:extern double max(double d1,double d2);  //聲明

 

4.除非有extern關鍵字,否則都是變量的定義。

例如:extern int i; //聲明

             int i; //定義          

 

 

程序設計風格:

    1. 不要把變量定義放入.h文件,這樣容易導致重復定義錯誤。

    2. 盡量使用static關鍵字把變量定義限制於該源文件作用域,除非變量被設計成全局的。

    3. 可以在頭文件中聲明一個變量,在用的時候包含這個頭文件就聲明了這個變量。

 

總結:

變量在使用前就要被定義或者聲明。

在一個程序中,變量只能定義一次,卻可以聲明多次。

定義分配存儲空間,而聲明不會。

 

       C++程序通常由許多文件組成,為了讓多個文件訪問相同的變量,C++區分了聲明和定義。

        變量的定義(definition)用於為變量分配存儲空間,還可以為變量指定初始值。在程序中,變量有且僅有一個定義。

        聲明(declaration)用於向程序表明變量的類型和名字。定義也是聲明:當定義變量的時候我們聲明了它的類型和名字。可以通過使用extern聲明變量名而不定義它。不定義變量的聲明包括對象名、對象類型和對象類型前的關鍵字extern。

        extern聲明不是定義,也不分配存儲空間。事實上它只是說明變量定義在程序的其他地方。程序中變量可以聲明多次,但只能定義一次。

        只有當聲明也是定義時,聲明才可以有初始化式,因為只有定義才分配存儲空間。初始化式必須要有存儲空間來進行初始化。如果聲明有初始化式,那麼它可被當作是定義,即使聲明標記為extern。

        任何在多文件中使用的變量都需要有與定義分離的聲明。在這種情況下,一個文件含有變量的定義,使用該變量的其他文件則包含該變量的聲明(而不是定義)。

 

  --------------------------------------------------------------------頭文件中定義與聲明

 

注意頭文件中不可以放變量的定義!!!一般情況下頭文件中只放變量的聲明,因為頭文件要被其他文件包含(即#include),如果把定義放到頭文件的話,就不能避免多次定義變量,C++不允許多次定義變量,一個程序中對指定變量的定義只有一次,聲明可以無數次。

不過有三個例外,一下三中實體的定義也可放到頭文件中。

1.值在編譯時就已知的const 變量的定義可以放到頭文件中

如:const int num(10);

2.類的定義可以放到頭文件中

3.inline 函數

這三個實體可以定義在多個源文件中,只要在每個源文件中的定義相同。

 

/--------------------------------------------------------------------頭文件中定義與聲明

 

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