64,648
社区成员
发帖
与我相关
我的任务
分享
比如
class Student
{private:
string name;
public:
Student(string n):name(n){} //为什么这样不对
//要这样 Student(const char*n):name(n){}
}
int main()
{
Student s("Nick");
return 0;
}
basic_string( char const *)
或是
basic_string( char const *, A const & = A())
类型的构造函数被加上了explicit声明,那么Student s("Nick")就无法通过编译,必须显示指明char const * 到string的转换:Student s(string("Nick"));Student(const string& n):name(n){}
Student s("Nick");
Use const reference which elides one copy of parameter, also it allows to bind to a rvalue.
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的构造函数的参数#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;
}