(Translated by https://www.hiragana.jp/)
C++类 - 维基百科,自由的百科全书

C++ほどしき设计まことほどじょ使用しよう(class)てい特定とくていほどじょちゅうてきかずすえ类型。这些すうすえ类型てき实例しょう对象 ,这些实例包含ほうがんほどじょ员定义的なり变量つねりょうなり员函すう,以及じゅう载的运算。语法じょう,类似Cちゅう结构たい(struct)てき扩展,Cちゅう结构たい不能ふのう包含ほうがん函数かんすう以及じゅう载的运算

C 结构たいあずかC++ 类的对比

编辑

ざい C++ ちゅう结构たい よし关键词 struct てい义的一种数据类型[1]てきなり员和もと类默认为公有こうゆうてき(public)。よし关键词 class てい义的なり员和もと类默认为私有しゆうてき(private)。这是C++ちゅう结构たい类仅ゆうてき别。

聚合类

编辑

聚合类是一种没有用户定义的构造函数,ぼつゆう私有しゆう(private)かずたもつ护(protected)せい态数すえなり员,ぼつゆうもと类,ぼつゆうきょ函数かんすう[2]。这样てき类可以由ふう闭的だいくくごうよう逗号ぶんへだた开初はじめれつひょう[3]したれつてきだい码在 C C++ 具有ぐゆうしょうどうてき语法:

struct C
{
  int a;
  double b;
};

struct D
{
  int a; 
  double b;
  C c;
};

// initialize an object of type C with an initializer-list
C c = { 1, 2 };

// D has a sub-aggregate of type C. In such cases initializer-clauses can be nested
D d = { 10, 20, { 1, 2 } };

POD 结构

编辑

いちPOD结构普通ふつう旧式きゅうしきすうすえ结构)いち个不包含ほうがんPOD结构、POD联合(あるもの这些类型てきすう组)ある引用いんようてきせい态成员变りょうせい态成员没有限ゆうげんせい),并且ぼつ有用ゆうよう户定义的赋值运算析构てき聚合类。[1] いち个POD结构以说C structざいC++ちゅうてきとう价物。ざいだい多数たすうじょう况下,いち个POD结构拥有いち个在Cちゅう声明せいめいてき对应てき结构しょうどうまとないそんぬのきょく[4]いん此,POD结构ゆう时不正式せいしきしょう为“C风格结构”(C-style struct)。 [5]

C结构与C++ POD结构共有きょうゆうてき属性ぞくせい

编辑
  • かずすえなり员被分配ぶんぱい使とく一个对象中之后的成员有着更高的地址,じょまたがこしりょう一个访问描述符[6]
  • 两个POD结构类型ぬのきょくけんようてき如果它们ゆうしょうどう数量すうりょうてきせい态数すえなり员,而且对应てきせい态数すえなり员(按照顺序)ぬのきょくけんようてき[7]
  • いち个POD结构包含ほうがん命名めいめいてきはまたかし[8]
  • いち指向しこうPOD结构对象てきゆび针适あい使用しようreinterpret_cast指向しこう其初はじめなり员而且反またしか,说明ざいPOD结构てき头部存在そんざいはまたかし[8]
  • いち个POD结构以被offsetofひろし使用しよう[9]

声明せいめい使用しよう

编辑

C++ てき结构たい具有ぐゆう自己じこてきなり员。这些なり包括ほうかつ变量(包括ほうかつ其他结构たい类),做方法的ほうてき函数かんすう特定とくていてき标示あるじゅう载的运算),构造函数かんすう以及析构函数かんすうなり员被声明せいめいなり为公どもある私有しゆう使用しよう说明public:private:らい区分くぶん。说明きさき现的にんなんなり员会获得しょう应的访问权限ちょくいたしも一个说明符的出现。对于继承てき类能够使用しようprotected:说明

基本きほん声明せいめい和成かずなり员变りょう

编辑

类和结构たいてき声明せいめい使用しよう关键词classstructなり员在类和结构たいてき内部ないぶ声明せいめい

下面かめんてきだい码段实例りょう结构たい类的声明せいめい


struct person
{
  string name;
  int age;

};
class person
{
public:
  string name;
  int age;
};

以上いじょう两个声明せいめいざいこうのうじょうとう价的。まい一段代码都定义了一个类型person,其含有がんゆう两个なり员变りょうnameage注意ちゅういだいくくごうきさきめんてきぶんごう必需ひつじゅてき

ざい其中いち声明せいめいきさき不能ふのうどう使用しよう两个),person以被ようらいてい义新てきperson类型てき变量:

#include <iostream>
#include <string>
using namespace std;

class person
{
public:
  string name;
  int age;
};

int main ()
{
  person a, b;
  a.name = "Calvin";
  b.name = "Hobbes";
  a.age = 30;
  b.age = 20;
  cout << a.name << ": " << a.age << endl;
  cout << b.name << ": " << b.age << endl;
  return 0;
}

执行以上いじょうだい码将かい输出

Calvin: 30
Hobbes: 20

なり员函すう

编辑

なり员函すうC++ てき类和结构たいてきいち个重よう特性とくせい。这些すうすえ类型包含ほうがんさく为其なり员的函数かんすうなり员函すうふん为静态成员函すうあずかせい态成员函すうせい态成员函すうただのう访问该数すえ类型てき对象てきせい态成员。而非せい态成员函すうのう够访问对ぞうてき所有しょゆうなり员。ざいせい态成员函すうてき函数かんすう体内たいない,关键词this指向しこうりょう调用该函すうてき对象。这通常つうじょうどおり过thiscall调用协议,はた对象てきさく为隐含的だい一个参数传递给成员函数。[10]さいつぎ以之まえてきperson类型さく为例

class person
{
  std::string name;
  int age;
public:
  person() : age(5) { }
  void print() const;
};

void person::print() const
{
  cout << name << ";" << this->age << endl;
  /* "name""age"なり员变りょう
     "this"关键てき值是调用对象てき。其类がた
     const person*,原因げんいん该函すう声明せいめい为const。
  */
}

ざい上面うわつらてきれい子中こなかprint()函数かんすうざい类中声明せいめい,并在类的名称めいしょうきさきじょう::らい限定げんてい它后以定义。nameage私有しゆうてき(类的だま认修饰符),print()声明せいめい公有こうゆうゆかり于一个被用于类外的成员需要被申明为公有的。

つう使用しようなり员函すうprint(),输出以被简化为:

a.print();
b.print();

上述じょうじゅつてきabしょう为调ようしゃ(sender),とうprint()函数かんすう执行时每一个都引用自己的成员变量。 はた类或结构てきさるあきらしょう做接こうかずじょう义(しょうさく实现)いれぶん开的单元つね见的做法。よう需要じゅようてきせっこうにゅういち个头ぶんけんちゅう而实现则独立どくりつにゅう原始げんし码或しゃ编译きさきてき形式けいしき

せい态成员函すう以用constあるvolatile关键词限定げんてい。const限定げんていてきなり员函すう不能ふのうおさむあらため其他すうすえなり员(じょりょう具有ぐゆうmutableてき例外れいがい),也不能ふのう调用const限定げんていてき其他なり员函すう。编译实现时,通常つうじょうざいconst限定げんていてきなり员函すう体内たいない,thisしょ指向しこうてきすうすえなり员自动具有ぐゆうconst限定げんていいん此是ただ读的。const对象ただのう调用constなり员函すう;volatile对象ただのう调用volatile限定げんていてきなり员函すうはんこれぼつゆう受到限定げんていてき普通ふつう对象以调よう所有しょゆうてきなり员函すう论它为cv限定げんてい。构造函数かんすう、析构函数かんすう不能ふのうcv限定げんてい

继承

编辑

POD类的ないそんぬのきょくぼつゆうC++标准规定。れい如,许多流行りゅうこうてきC++编译どおり过将ちち类的だん和子わこ类的だん并置らい实现单继承ただし这并标准しょ需求。这种ぬのきょくてき选择使とくはたちち类的ゆび指向しこう类的操作そうさ平凡へいぼんてき(trivial)。

れい如,こう虑:

class P 
{
    int x;
};
class C : public P 
{
    int y;
};

いちPてき实例P* p指向しこう它,ざいないそんちゅう可能かのうおこりらいぞう这样:

+----+
|P::x|
+----+
↑
p

いちCてき实例P* p指向しこう它,ざいないそんちゅう可能かのうおこりらいぞう这样:

+----+----+
|P::x|C::y|
+----+----+
↑
p

いん此,にんなんみさおP对象てきだんてきだい码都以操纵在C对象ちゅうてきPだん而不需要じゅようこう虑任なん关于Cだんてきてい义。一个正确书写的C++ほどじょ在任ざいにんなんじょう况下应该对被继承だんてきぬのきょくゆうにんなん假定かてい使用しようstatic_castあるものdynamic_cast类型转换运算かい确保ゆび针正确的从一个类型转换为另一个。

多重たじゅう继承并不么简单。如果いち个类D继承りょうP1P2么两个父类的だん需要じゅよう按照ぼう种顺じょそん储,ただしざいだい多数たすうじょう况下)ただゆう一个父类可以被放在子类的头部。まいとう编译需要じゅようしょういち指向しこうDてきゆび针转换为P1あるP2なかてきにんいち个,编译需要じゅよう提供ていきょう一个自动转换从子类的地址转换为父类字段的地址(典型てんけい,这是一个简单的偏移量计算)。

关于多重たじゅう继承てきさら资讯,参看さんかんきょ继承

じゅう载运さん

编辑

C++よう许程じょ员重载某些运さん目的もくてき补充库中のう提供ていきょうてき针对特定とくてい类的运算どう,很多时自てい类也いん为内けん不能ふのう提供ていきょう指定してい运算需要じゅようじゅう载。

另外,とうほどじょ员没ゆうじゅう载或てい义某些运さん时,编译かい动地建立こんりゅう它们,れいさんほうなかてき复制指定してい运算=)。

あきら惯例,じゅう载运さん时应拟运さん本身ほんみ义的こうのうれい如重载运さん“*”时,ほどじょ员义务重载为两数乘法じょうほうある其他,视数がくあるほどじょじょうてき义)。另外,宣告せんこくいち结构如integer类,とうじゅう载运さん如“*”就要かいinteger类:

struct integer 
{
    int i;
    integer(int j = 0) : i(j) {}
    integer operator*(const integer &k) const 
    {
        return integer (i * k.i);
    }
};

ある

struct integer 
{
    int i;
   
    integer(int j = 0) : i(j) {}
 
    integer operator*(const integer &k) const;
};
 
integer integer::operator*(const integer &k) const 
{
    return integer(i * k.i);
}

ざい这里,const关键现两おもて达式const integer &kなかてきconst关键代表だいひょう函数かんすう不能ふのうおさむあらため此常りょう值,而第const关键代表だいひょう此函すうかいおさむあらため类对ぞう本身ほんみ*this)。

integer &kこれちゅう符号ふごう&表示ひょうじ引用いんよう形式けいしき调用。とう调用函数かんすう时会直接ちょくせつ传递变量,并以变量本身ほんみだい这里てき变量k[11]

二元可重载运算符

编辑

二元にげん运算かいよう函数かんすう方式ほうしき并以“operator 運算うんざん”识别らい进行じゅう载,这里てきさんすうかい单一さんすう。实际使用しよう时,二元运算符左方的变量会成为类对象本身(*this),而右かた变量则成为传にゅうさんすう

integer a = 1; 
/* 這裡てき等號とうごう其中いちしゅもと運算うんざん
   わが們可利用りようおも運算うんざん(=)てき方式ほうしき
   らい提供ていきょうはつはじめこうのう,而左かたてき變數へんすうi
   就是るい物件ぶっけん本身ほんみみぎかたてき數字すうじ1のり
   でんにゅうさんすう。 */
integer b = 3;
/* 變數へんすう名字みょうじ跟類物件ぶっけん內的變數へんすう無關むせき */
integer k = a * b;
cout << k.i << endl;  //輸出ゆしゅつ3

以下いか二元可重载运算符列表:

さん术运さん

运算名称めいしょう 语法
加法かほう(总和) a + b
以加ほう赋值 a += b
减法( a - b
以减ほう赋值 a -= b
乘法じょうほう积) a * b
以乘ほう赋值 a *= b
除法じょほうぶん a / b
以除ほう赋值 a /= b
すうすう a % b
以模すう赋值 a %= b

较运さん

运算名称めいしょう 语法
しょう a < b
しょう于或とう a <= b
だい a > b
だい于或とう a >= b
不等ふとう a != b
とう a == b
逻辑 AND a && b
逻辑 OR a || b

くらい操作そうさ

运算名称めいしょう 语法
くらいもとひだりうつり a << b
以位もとひだりうつり赋值 a <<= b
くらいもとみぎうつり a >> b
以位もとみぎうつり赋值 a >>= b
くらいもとAND a & b
以位もとAND赋值 a &= b
くらいもとOR a | b
以位もとOR赋值 a |= b
くらいもとXOR a ^ b
以位もとXOR赋值 a ^= b

其它运算

运算名称めいしょう 语法
基本きほん赋值 a = b
逗号 a , b

运算=以被用作ようさく赋值,意思いしはらじょうこうのうよしみぎかた变量しょううつし内部ないぶ资料いたひだりかた变量,ただし视乎需要じゅよう也可以被用作ようさく其他用途ようと

まい个运さん互相独立どくりつ存在そんざい,并不赖其运算れい如运さん<)并不需要じゅよう运算>存在そんざい从而运作。

一元可重载运算符

编辑

一元いちげん运算上述じょうじゅつてき运算相似そうじただ一元运算符只会加载类对象本身(*this),而不接受せつじゅ其他さんすう。另外,一元运算符有分前置运算符和后置运算符,ふん别在于前おけ运算かいいた变量前方ぜんぽうきさきおけ运算则是きさきかたれい如负值运さん-かず逻辑はん运算!一元前置运算符。

以下いか一元可重载运算符列表:

さん术运さん

运算名称めいしょう 语法 类型 备注
いち元正がんしょうごう +a ぜんおけ
ぜん缀递ぞう ++a ぜんおけ せん1并回传加1きさきてき
きさき缀递ぞう a++ きさきおけ 1ただしかい传加1まえてき
一元いちげん负号(はん -a ぜんおけ
ぜん缀递减 --a ぜんおけ さき减1并回传减1きさきてき
きさき缀递减 a-- きさきおけ 减1ただしかい传减1まえてき

较运さん

运算名称めいしょう 语法 类型
逻辑はん !a ぜんおけ

くらい操作そうさ

运算名称めいしょう 语法 类型
くらいもといちてき补码 ~a ぜんおけ

其它运算

运算名称めいしょう 语法 类型
间接(こうした参考さんこう *a ぜんおけ
まと参考さんこう &a ぜんおけ
转换 (type) a ぜんおけ

じゅう载一元运算符时有区分前置和后置式,一元前置运算符按以下格式编写:

かいでん資料しりょうがたたい operator 運算うんざん ()

而后おけ运算按以格式かくしき编写:

かいでん資料しりょうがたたい operator 運算うんざん (さんすう)

くくごうじゅう

编辑

くくごう运算ゆう两种,ふん别是方形ほうけいくくごう运算[]かず圆形くくごう运算())。方形ほうけいくくごう运算また名数めいすう组运さんただのう传入单一さんすう,而圆がたくくごう运算却可以传にゅう任意にんい数量すうりょうてきさんすう

方形ほうけいくくごう运算按以格式かくしきじゅう载:

かいでん資料しりょうがたたい operator[] (さんすう)

圆形くくごう运算按以格式かくしきじゅう载:

かいでん資料しりょうがたたい operator() (まいりすう1, まいりすう2, ...)

注意ちゅういまいりすう指定していざいだい个括ごうなかだい一个括号只是运算符符号。

构造函数かんすう

编辑

ゆう时软けん工程こうてい师会おもえよう们的变量ざい声明せいめい时有いち个默认值。这可以通过声明せいめい构造函数かんすう做到。

person(string N, int A) 
{
    name = N;
    age = A;
}

なり员变りょう以像下面かめんてきれいいち样,利用りよういち个冒ごうつう过一个初始化序列初始化。这与上面うわつら不同ふどう,它进ぎょうりょうはつはじめ使用しよう构造函数かんすう),而不使用しよう赋值运算。这对类类がたらい说更有效ゆうこういん为它ただ需要じゅよう直接ちょくせつ构造;而赋值时,它们必须さき使用しようだま认构づくり函数かんすう进行だいいちはつはじめしかきさきさい赋予一个不同的值。而且いち些类がたれい引用いんようconst类型)不能ふのう赋值,いん而必须通过初はじめ序列じょれつ进行はつはじめ

person(std::string N, int A) : name(N), age(A) {}

注意ちゅういはなくくごう不能ふのう省略しょうりゃくそく使つかい为里めん为空。

だま认值以给さいきさきてき几个さんすう类帮じょはつはじめだま认值。

person(std::string N = "", int A = 0) : name(N), age(A) {}

ざい上面うわつらてきれい子中こなかとうぼつゆうさんすう给予构造函数かんすう时,とう价于调用以下いかてき无参构造函数かんすう(一个默认构造函数):

person() : name(""), age(0) {}

构造函数かんすうてき声明せいめいおこりらいぞう一个名字和数据类型相同的函数。こと实上,わが们的确可以用函数かんすう调用てき形式けいしき调用构造函数かんすうざい这种じょう况下いちperson类型てき变量かいなり为返かい值:

int main() 
{
    person r = person("Wales", 40);
    r.print();
}

以上いじょうてきれい创建りょういち个临时的person对象,しかきさき使用しよう复制构造函数かんすうはた其赋r。一个更好的创建对象的方式(ぼつゆう需要じゅようてき拷贝):

int main() 
{
    person r ("Wales", 40);
    r.print ();
}

具体ぐたいてきほどじょぎょう为,以也不和ふわ变量ゆう关系,以被さく为一部分ぶぶん加入かにゅう构造函数かんすう

person() 
{
    std::cout << "Hello!" << endl;
}

つう过以じょうてき构造函数かんすうとういちperson变量ぼつゆう具体ぐたいてき值初はじめ时,“Hello!”かいしるし

だま认构づくり函数かんすう

编辑

とう类没有定ありさだ义构づくり函数かんすう时,だま认构づくり函数かんすうはた调用。

class A { int b;};
//使用しようくくごう创建对象
A *a = new A(); //调用だま认构づくり函数かんすう,bかいはつはじめ为'0'
//使用しようくくごう创建对象
A *a = new A; //仅分配ぶんぱいないそん调用だま认构づくり函数かんすう,bかいゆう一个未知值

しか而如はてよう户定义了这个类的构造函数かんすう,两个声明せいめい都会とかい调用よう户定义的构造函数かんすう。而在よう户定义的构造函数かんすうちゅうてきだい码会执行,并且かい赋予bだま认值。

析构函数かんすう

编辑

一个析构函数是一个构造函数的逆,とう一个类的一个实例被销毁时会被调用,れい如当いち个类ざい块(一组花括号“{}”)ちゅう构造てき一个对象会在关闭括号后删除,これきさき析构函数かんすう动调よう。它会ざいきよしそら保存ほぞん变量てきないそん位置いち时被调用。析构函数かんすう以在类被销毁时用らい释放资源,れい如堆分配ぶんぱいてきないそん开的ぶんけん

声明せいめい一个析构函数的符号类似于构造函数。它没ゆうかえしかい值而且方法的ほうてき名称めいしょうざい类的名称めいしょうぜんじょう波浪はろう线(~)あいどう

~person() 
{
    cout << "I'm deleting " << name << " with age " << age << endl;
}

另外要注意ようちゅういてき,析构函数かんすうよう许参すう传递。しか而,あずか构造函数かんすういち样,析构函数かんすう以被显式调用:

int main() 
{
    person someone("Wales", 40);
    someone.~person();  //此時かい輸出ゆしゅついち"I'm deleting Wales with age 40"

    return 0;  //だい輸出ゆしゅつ"I'm deleting  with age 40"
}
/* ざい這裡,ほどしき結束けっそくかい自動じどう調ちょうよう析構函數かんすう
   而person.nameざいだい一次調用析構函數時已被清除,
   ただしperson.ageかい按編やく而定,
   ぼつのうざいだい一次調用析構函數時清零。 */

构造函数かんすうあずか析构函数かんすうてき相似そうじてん

编辑
  • 两者都和つわ声明せいめい所在しょざいてき类有しょうどうてき名字みょうじ
  • わか宣告せんこく,两者都会とかい执行だま认的ぎょう为。そく类在建立こんりゅうある删除时,かい一同分配或删除存储器。
  • 派生はせい类(subclass)而言,ざいもと类(superclassてき构造函数かんすう执行间,派生はせい类的构造函数かんすう还未执行;はんこれざいもと类的析构函数かんすう执行间,派生はせい类的析构函数かんすうやめ执行かん毕。两种じょう况下,无法使用しようざい派生はせい宣告せんこくてき变量。

类模ばん

编辑

类模ばん对一批仅仅成员数据类型不同的类的抽象,ほどじょ员只よう为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生きすぎしげる具体ぐたいてき类,这类以看さく类模いたてき实例,从而だいだいひさげだか编程てき效率こうりつ

属性ぞくせい

编辑

C++语法试图使一个结构的所有方面看起来像一个基本きほんすうすえ类型よし此,运算じゅう载允许结构像整数せいすう浮点すういち操作そうさ,结构てきかず以通过方くくごう声明せいめいsome_structure variable_name[size]),而且指向しこう结构てきゆび针可以通过和指向しこうないけん类型てきゆび通用つうようてき方法ほうほうかい引用いんよう

うちそん消耗しょうもう

编辑

结构てきないそん消耗しょうもういたりしょう组成变量てきないそん大小だいしょうてき总和。参考さんこう如下twonums 结构れい

struct twonums 
{
    int a;
    int b;
};

这个结构包含ほうがん两个せいがたざいとうぜん许多 C++ 编译ちゅうせいがただまこれ32 せいがた所以ゆえんごと个成员变りょう消耗しょうもう 4 个字节的ないそんよし而整个结构至しょうあるものせいこのみ消耗しょうもう 8 个字节的ないそん,见下图。

+----+----+
| a  | b  |
+----+----+

しか而,编译可能かのうざい变量あるもの结构てき结尾添加てんかそらてき, 这样以保证和给定てき电脑结构ひきはい通常つうじょうこれ变量添加てんかいた 32 。如下れいしょしめせてき结构:

struct bytes_and_such
{ 
   char c;
   char C;
   short int s;
   int i;
   double d;
};

なり

+-+-+--+--+--+--+--------+
|c|C|XX|s |  i  |   d    |
+-+-+--+--+--+--+--------+

ざいないそんちゅう, XX 表示ひょうじ两个使用しようてき空位くういもと

いん为结构可能会のうかい使用しようゆび针和すう组去声明せいめい あるものはつはじめ变量,结构てきないそん消耗しょうもう一定いってい固定こていてき。另外一个内存消耗不固定的例子是模板结构。

くらいだん

编辑

くらいだん(Bit field)以被ようらいてい义比ないけん类型还要しょうてき类成员变りょうつう过这个字だんてい义的变量,ただ以像使用しようないけんてき整数せいすう类型(れい如int, char, short, long...)样子使用しよう

struct A
{ 
	unsigned a:2; // 以存储0-3てき数字すうじうらないすえいち个intぜん2 bitてきそら间.
	unsigned b:3; // 以存储0-7てき数字すうじうらないすえきさき3 bitてきそら间.
	unsigned :0;  // うつり动到一个内置类型的末尾
	unsigned c:2; 
	unsigned :4;  // ざいcdちゅう间加4bitてき空白くうはく
	unsigned d:1;
	unsigned e:3;
};

// うちそん结构
/*	4 byte int   4 byte int
	[1][2][3][4] [5][6][7][8]
	[1]                   [2]              [3]              [4]
	[a][a][b][b][b][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]

	[5]                  [6]                [7]              [8]
	[c][c][][][][][d][e] [e][e][][][][][][] [][][][][][][][] [][][][][][][][]
*/

くらいだん不能ふのうざい结构たいちゅう使用しよう,它只のうざい使用しようstructあるものclass关键てい义的类中使用しよう

引用いんよう传参

编辑

this关键

编辑
complex& operator+=(const complex & c) 
{
    realPart += c.realPart;
    imagPart += c.imagPart;
    return *this;
}

まいり

编辑

参考さんこう

编辑
  1. ^ 1.0 1.1 ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §9 Classes [class] para. 4
  2. ^ ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §8.5.1 Aggregates [dcl.init.aggr] para. 1
  3. ^ ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §8.5.1 Aggregates [dcl.init.aggr] para. 2
  4. ^ What's this "POD" thing in C++ I keep hearing about?. Comeau Computing. [2009-01-20]. (原始げんし内容ないようそん档于2009-01-19). 
  5. ^ Henricson, Mats; Nyquist, Erik. Industrial Strength C++. Prentice Hall. 1997. ISBN 0-13-120965-5. 
  6. ^ ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §9.2 Class members [class.mem] para. 12
  7. ^ ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §9.2 Class members [class.mem] para. 14
  8. ^ 8.0 8.1 ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §9.2 Class members [class.mem] para. 17
  9. ^ ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §18.1 Types [lib.support.types] para. 5
  10. ^ thiscall (C++). [2009-01-26]. (原始げんし内容ないようそん于2008-12-10). 
  11. ^ integer *k不同ふどう使用しよう符号ふごう(*)ただかい传递变量,而且ただのう利用りよう变量操作そうさ变量本身ほんみ

资料らいげん

编辑