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 关注
- 127 浏览
添加回答
举报
0/150
提交
取消