1. 程式人生 > >C++---如何在類中宣告一個常量?

C++---如何在類中宣告一個常量?

需求:有時候需要在類定義中宣告一個常量,怎麼宣告呢?

常見錯誤用法:

class Student

{。。。

   const int  Len=10;

   char name[Len];  //錯誤;宣告時,只是描述了物件的形式,並沒有真正的建立物件;

}//通俗的講就是:只是給你說說要給你什麼,但並沒有給你東西;

//Student類宣告中,並沒有給Len分配儲存10的記憶體空間,沒有地方容納10,const以後又不允許修改,

建立具體物件時,Len的值不確定

解決:

方法1:列舉 enum{ Len=10 }; //相當於開了個欠條,發工資的時候,也就是建立具體物件時,

                   char name[Len]; //拿這個欠條去換,也就是用10去替換Len,這是有憑證的

方法2:使用static //在財務處單獨給你取了錢(在靜態儲存區分配了儲存區儲存10的空間)

           const int Len=10;

           char name[Len];

相關推薦

C++---如何在宣告一個常量

需求:有時候需要在類定義中宣告一個常量,怎麼宣告呢? 常見錯誤用法: class Student {。。。    const int  Len=10;    char name[Len];  //錯誤

Unity 3D:訪問另一個C#的屬性或方法

在開發Unity 3D 遊戲的過程中,經常遇到在某個C#類中訪問另一個C#類中的方法或屬性;比如:在Eenmy.cs中訪問PlayAttack.cs指令碼中的TakeDamage(int damage

C++一個建構函式呼叫另一個建構函式

class A { int a; int b; int c; public: A(int aa, int bb) : a(aa), b(bb),c(0) { cout << "aa bb" << endl; } A(int aa, in

C++初始化列表問題,一個物件型別的陣列成員變數,在初始化列表初始化時報錯“[]”操作符語法錯誤

陣列作為成員變數時只有預設初始化,也就是無法傳遞引數。有兩種變通方案:你可以把物件陣列改成指標陣列,或者把ClassB類的構造和初始化分開。 方案一: class ClassA{ private: ClassB* arrayOfObjectClassB[2];

C語言一個*和[]優先級問題

pre 執行 return ges spa 技術 分享 malloc bsp 最近寫著玩了這麽一段代碼 1 int Init(int **T, int v1, int v2, int v3) 2 { 3 4 if (!(*T=(int*) malloc(3*

C++的特殊成員函數-------復制構造函數

code amp 默認 tdi blog 復制構造函數 stat int ios   在C++中存在一個特殊函數,他就是復制構造函數,假如我們有類A,如果有A a;A b=a; 在這種情況下利用A類變量a來給同是A類變量的b來賦值,這個時候類會使用復制構造函數,如果我們

php--在聲明常量的關鍵字

繼承 con def 屬性 實例 類名 () 接口 屬性。 Final、static、const、instanceod Final :final關鍵字可以加在類或者類中方法之前,但是不能使用final標識成員屬性。     作用: 使用final標識的類,不能被繼承。

[原創]c# Collection 字段初始化的特殊之處

朋友 gpo eal customer tom 不理解 fig return names 1.今天看一下StackExchange.Redis的源代碼,裏面有這樣一段代碼 public sealed class ConfigurationOptions : ICl

c++public,private,protected的用法與區別

1、public修飾的成員變數 在程式的任何地方都可以被訪問,就是公共變數的意思,不需要通過成員函式就可以由類的例項直接訪問 2、private修飾的成員變數 只有類內可直接訪問,私有的,類的例項要通過成員函式才可以訪問,這個可以起到資訊隱藏 3、protected是受保護變數 類內

C++建構函式

我們在定義一個類之後,在利用該類定義了一個物件後,往往需要對該物件中資料成員變數進行初始化。有時候我們會誤操作,忘記初始化或者重複初始化,這樣做都會造成程式的崩潰。C++給我們提供了一個很有用的方法,就是類的建構函式。 C++類的建構函式,和其它成員函式一樣,在類中定義。不過建構函式和其他成

有關C++資料成員變數定義的一些想法

最近開始學習C++,以前是學C的,對C++新生的類不是很懂,最近在看一些教程,發現有的教程只是簡單的告訴你什麼是類,還有怎麼使用類,但對於類的標準啥的並沒有進行標準化的介紹。 關於C++類中成員變數的定義,一般都是推薦這樣定義: 1.類中的屬性(不是函式)最好定義標準化,並且取名字能讓其

java異常練習題:定義一個MulException繼承Exception,要求兩數相乘等於100報錯,在主定義一個方法,在方法丟擲此異常,在主方法觀察結果

題目描述: 定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。  定義一個DivException類繼承RuntimeException類,要求兩數相除等於2報錯,在主類中定義

C# 的靜態欄位始終繼承自基

我們試想一下現在有一個類Parent,它有一個static的int型別欄位number,然後如果類Parent有三個子類Child01、Child02和Child03,那麼改變Parent.number的值的話,Child01.number、Child02.number和Child03.number的值也會被

Qt如何將訊息在2個沒有關係的一個傳送到另一個

條件: ①2個類直接沒有任何關係; ②接收訊息的類必須有一個全域性變數; ③ QMetaObject::invokeMethod((QObject*)全域性變數類, "接收的方法", Qt::AutoConnection, Q_ARG(接收的引數型別, 接收的引數)); cla

1).定義一個MulException繼承Exception,要求兩數相乘等於100報錯,在主定義一個方法,在方法丟擲此異常,在主方法觀察結果。

1).定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。 2).定義一個DivException類繼承RuntimeException類,要求兩數相除等於2報錯,在主類中定義一個方法,在方法中丟

向controller傳一個一個list,400,415,500

報錯有可能是json格式不對,controller沒有@RequestBody,ajax沒有 contentType: 'application/json;charset=UTF-8', data: JSON.stringify(datas),//data沒有JSON.stringify()

C++對同類物件private成員的訪問

轉:http://www.cnblogs.com/yanqi0124/p/3828507.html 私有成員變數的概念,在腦海中的現象是,以private關鍵字宣告,是類的實現部分,不對外公開,不能在物件外部訪問物件的私有成員變數.   然而,在實現拷貝建構函式和賦值符函式時,在函式裡

Java宣告一個物件並賦值NULL或者只宣告不賦值

其實這個問題可以當成宣告變數要不要賦初始值的問題,不管這個變數是基礎型別還是引用型別,只是基礎型別不能賦值NULL。 這裡要分兩種清況,成員變數或者區域性變數。給一個程式碼: class People{ private String name; private int a

error C2248: “CObject::CObject”: 無法訪問 private 成員(在“CObject”宣告)---解決辦法

如果自己定義了一個類,該類自身沒有過載賦值運算子(=)或者拷貝建構函式(把類物件作為引數直接傳入)都會造成此錯誤   在我們定義的Class中如果需要繼承,或者是必須繼承Object類時,我們又需要對類的物件進行操作是,會出現: error C2248: “CObject::COb

在同一個一個方法呼叫另外一個有註解(比如@Async,@Transational)的方法,註解失效的原因和解決方法

在同一個類中,一個方法呼叫另外一個有註解(比如@Async,@Transational)的方法,註解是不會生效的。 比如,下面程式碼例子中,有兩方法,一個有@Transational註解,一個沒有。如果呼叫了有註解的addPerson()方法,會啟動一個Transaction;如果呼叫updatePerso