读书人

为啥string在类的构造函数里不能用

发布时间: 2013-06-25 23:45:41 作者: rapoo

为什么string在类的构造函数里不能用


好吧
既然你愿意把一个错误的答案当作正解我也不能阻止你.
但是出于人道, 我还是提醒一下:

1. 默认构造函数是不带参数的构造函数, string(char*)是不能称为默认构造函数的.
2. string 是有 string(const char*) 这种形式的构造函数的.
为啥string在类的构造函数里不能用
[解决办法]


class Student
{private:
string name;
public:
Student(string n):name(n.c_str()){} //为什么这样不对
//要这样 Student(const char*n):name(n){}

};
int main()
{
Student s(string("Nick"));

return 0;
}


试试这个,理解string的构造函数的参数
[解决办法]
楼主用的什么编译器?用的哪个stl库?
在我这里是没有问题的(除了类定义少个分号)
检查一下你的stl库中basic_string的构造,如果

basic_string( char const *)

或是

basic_string( char const *, A const & = A())

类型的构造函数被加上了explicit声明,那么Student s("Nick")就无法通过编译,必须显示指明char const * 到string的转换:Student s(string("Nick"));
[解决办法]
我试了
#include<string>
using namespace std;
class Student
{
private:
string name;
public:
Student(string n):name(n.c_str()){}//为什么这样不对 实际对的
//要这样 Student(const char*n):name(n){}

};
int main()
{
Student s("Nick");

return 0;
}

读书人网 >C++

热点推荐