请问一个很弱的问题,关于string::size_type的,麻烦大佬帮忙看看?

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 的原话打给我哦~

小唯快跑啊
浏览 128回答 2
2回答

慕莱坞森

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

string::size_type 不是string中的静态成员而是内部定义的一种类型像:class string{public:typedef unsigned size_type ;}
打开App,查看更多内容
随时随地看视频慕课网APP