问题来源于《c++ primer 5th》的习题13.44的答案,实现一个简单的string类,看答案的时候发现看不懂类的构造函数,代码如下:
class String
{
public:
String() : String("") { } // ???
String(const char *);
String(const String&);
String& operator=(const String&);
~String();
//...
private:
char *elements;
char *end;
std::allocator<char> alloc;
};
这里的构造函数:
String() : String("") { }
这样写要如何理解?我只能理解在列表初始化中给成员变量赋值的情况,这个语句有点看不懂,它做了什么事?
这个的意思是执行下面定义的
也就是默认的String s其实相当于String s("")
也就是在一个构造函数的初始化列表中可以使用其他的构造函数。