有关C++标准库中string类的问题,请大家帮忙。

来源:百度知道 编辑:UC知道 时间:2024/07/08 00:34:18
注意:我前天在百度知道里面发过同样的问题,但是由于复制的时候出了点问题,里面的尖括号都没显示出来,现重发一下,敬请谅解。
我在msdn中查看了标准C++库中的string类,看它的命名空间的定义,前几行是这些:

namespace std {
// TEMPLATE CLASSES
template<class E>
struct char_traits; (1)
struct char_traits<char>; (2)
struct char_traits<wchar_t>; (3)
...
之后我又分别查看了char_traits, char_traitschar和char_traitswchar_t的定义,如下:
(一)
char_traits
struct char_traits<E> {
typedef E char_type;
typedef T1 int_type;
typedef T2 pos_type;
typedef T3 off_type;
typedef T4 state_type;
static void assign(E& x, const E& y);
static E *assign(E *x, size_t n, const E& y);
static bool eq(const E& x, const E& y);
static bool lt(const E& x, const E& y);
static int compare(const E *x, const E *y, size_t n);
static size_t length(const E *x);
static E *copy(E *x, const E *y, size_t n);
static E *move(E

模板有函数模板和类模板,上面用到的是类模板。

C++中,class和struct除默认访问权不同外,其他都一样。所以你的第二个问题根本就不是问题。

我也糊涂了,struct char_traits<E>{...};也是类模板?

补充(只是补充)一楼一下

类本来就是结构体的升级扩充。