c++ primer 上寫,string的成員函數返回的類型是 string::size_type ,然后又說,string::size_type 是unsigned 型的,可是string 是一個類string::size_type 這種表示方法我只記得是 類的靜態數據成員了,但是后面一頁 P76寫了 for(string::size_type ix=0;ix!=str.size();++ix)于是乎我徹底混亂了另外 string 的size()成員函數和length()有什么區別嗎,貌似length()直接說明了返回值是unsigned int 啊PS:因為我之前一直看清華大學那本綠皮的教材,稀里糊涂學了一大堆面向對象的概念,后來發現c++ primer 講的很好但是貌似 內容順序和綠皮完全是反的,有點凌亂了。不要把c++ primer 的原話打給我哦~
2 回答

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
string::size_type這種表示出現的情況不止是他是類的靜態數據成員這么一種,
比如
class string
{public:
class a
{...};
};
那么當想要在外界引用類a的時候可以string::a這樣子寫來創建對象,類似的,在類的共有部分定義共用體,結構體等等都可以這么寫
甚至
class string
{
public:
typedef unsigned int size_typedef;
};
這么做,那么也可以定義
那么在引用的時候就需要
string::size_typedef這樣子引用,
給你一個例子實現
#include<iostream>
class temp
{
public:
typedef int size;
};
int main()
{
using namespace std;
temp::size a=10;
cout<<a;
return 0;
}

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
string::size_type 不是string中的靜態成員而是內部定義的一種類型
像:
class string
{
public:
typedef unsigned size_type ;
}
- 2 回答
- 0 關注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消