c++åç§ä¸åç±»åæåæ ¹æ®æ¯å¦static ãæ¶åconstç±»åçåå§åæ¹æ³ä¸å°½ç¸åï¼javaçè¯æ³å°±æ²¡æè¿ä¹å¤æï¼æªçå¾é£ä¹å¤äººé½è·å»å¦Javaäºã以åé¢è¯æ¶è¢«äººé®å°è¿ä¸ªé®é¢åçä¸åºæ¥ï¼å代ç æ¶ä¹ç»å¸¸æä¹±äºï¼è¿éç¿»äºä¸ä¹¦ï¼æ»ç»ä¸ä¸ã
-----------------Test.h----------------------------
#pragma once
class Test
{
private :
int var1;
// int var11= 4; é误çåå§åæ¹æ³
const int var2 ;
// const int var22 =22222; é误çåå§åæ¹æ³
static int var3;
// static int var3333=33333; é误ï¼åªæéæ常éæåæè½ç´æ¥èµå¼æ¥åå§å
static const int var4=4444; //æ£ç¡®ï¼éæ常éæåå¯ä»¥ç´æ¥åå§å
static const int var44;
public:
Test(void);
~Test(void);
};
--------------------Test.cpp-----------------------------------
#include ".\test.h"
int Test::var3 = 3333333; //éææåç æ£ç¡®çåå§åæ¹æ³
// int Test::var1 = 11111;; é误 éææåæè½åå§å
// int Test::var2 = 22222; é误
// int Test::var44 = 44444; // é误çæ¹æ³ï¼æ示éå®ä¹
Test::Test(void) :var1(11111),var2(22222) //æ£ç¡®çåå§åæ¹æ³ ï¼ var3(33333) ä¸è½å¨è¿éåå§å
{
var1 =11111; //æ£ç¡®, æ®éåéä¹å¯ä»¥å¨è¿éåå§å
//var2 = 222222; é误ï¼å 为常éä¸è½èµå¼ï¼åªè½å¨ âconstructor initializer ï¼æé å½æ°çåå§åå表ï¼â é£éåå§å
var3 =44444; //è¿ä¸ªèµå¼æ¶æ£ç¡®çï¼ä¸è¿å 为ææ对象ä¸ä¸ªéææåï¼æ以ä¼å½±åå°å
¶ä»çï¼è¿ä¸è½å«ååå§åäºå§
}
Test::~Test(void)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
æäºæååéçæ°æ®ç±»åæ¯è¾ç¹å«ï¼å®ä»¬çåå§åæ¹å¼ä¹åæ®éæ°æ®ç±»åçæååéææä¸åãè¿äºç¹æ®çç±»åçæååéå
æ¬ï¼
a. 常éåæååé
b. å¼ç¨åæååé
c. éææååé
d. æ´åéæ常éæååé
e. éæ´åéæ常éæååé
对äºå¸¸éåæååéåå¼ç¨åæååéçåå§åï¼å¿
é¡»éè¿æé å½æ°åå§åå表çæ¹å¼è¿è¡ãå¨æé å½æ°ä½å
ç»å¸¸éåæååéåå¼ç¨åæååéèµå¼çæ¹å¼æ¯è¡ä¸éçã
éææååéçåå§åä¹é¢æç¹ç¹å«ã
åèä¸é¢ç代ç 以åå
¶ä¸æ³¨éï¼
// Initialization of Special Data Member
#include <iostream>
using namespace std;
class BClass
{
public:
BClass() : i(1), ci(2), ri(i) // 对äºå¸¸éåæååéåå¼ç¨åæååéï¼å¿
é¡»éè¿
{ // åæ°åå表çæ¹å¼è¿è¡åå§åãå¨æé å½æ°ä½å
è¿
} // è¡èµå¼çæ¹å¼ï¼æ¯è¡ä¸éçã
void print_values()
{
cout << "i =\t" << i << endl;
cout << "ci =\t" << ci << endl;
cout << "ri =\t" << ri << endl;
cout << "si =\t" << si << endl;
cout << "csi =\t" << csi << endl;
cout << "csi2 =\t" << csi2 << endl;
cout << "csd =\t" << csd << endl;
}
private:
int i; // æ®éæååé
const int ci; // 常éæååé
int &ri; // å¼ç¨æååé
static int si; // éææååé
//static int si2 = 100; // error: åªæéæ常éæååéï¼æå¯ä»¥è¿æ ·åå§å
static const int csi; // éæ常éæååé
static const int csi2 = 100; // éæ常éæååéçåå§å(Integral type) (1)
static const double csd; // éæ常éæååé(non-Integral type)
//static const double csd2 = 99.9; // error: åªæéæ常éæ´åæ°æ®æåæå¯ä»¥å¨ç±»ä¸åå§å
};
// éææååéçåå§å(Integral type)
int BClass::si = 0;
// éæ常éæååéçåå§å(Integral type)
const int BClass::csi = 1;
// éæ常éæååéçåå§å(non-Integral type)
const double BClass::csd = 99.9;
// å¨åå§å(1)ä¸çcsi2æ¶ï¼æ ¹æ®Stanley B. Lippmanç说æ³ä¸é¢è¿è¡æ¯å¿
é¡»çã
// ä½å¨VC2003ä¸å¦ææä¸é¢ä¸è¡å°ä¼äº§çé误ï¼èå¨VC2005ä¸ï¼ä¸é¢è¿è¡åå¯æå¯æ ï¼è¿ä¸ªåç¼è¯å¨æå
³ã
const int BClass::csi2;
int main(void)
{
BClass b_class;
b_class.print_values();
return 0;
}
温馨提示:答案为网友推荐,仅供参考