【发布时间】:2015-05-19 12:11:00
【问题描述】:
当我运行我的程序时它崩溃并出现以下错误:
在抛出 'std::length_error' 的实例后调用终止 什么():basic_string::_S_create 中止(核心转储)
我通过以下代码得到:
#include <iostream>
#include <string>
using namespace std;
class Cargo
{
string nm;
public:
Cargo(const string& name): nm(name)
{
}
Cargo& operator=(const Cargo& )
{
cout<<"inside Cargo::operator=()"<<endl;
return *this;
}
friend ostream& operator<<(ostream& os, const Cargo& ca)
{
return os<<"Cargo name: "<<ca.nm;
}
};
class Truck
{
Cargo b;
string name;
public:
Truck(const string& nm):b("Cargo" + name)
{
name = nm;
}
void print()
{
cout << "name: " << name << endl;
cout << b << endl;
}
};
int main()
{
Truck a("Truck a"), b("Truck b");
a = b;
a.print();
b.print();
}///~:
【问题讨论】:
-
此时
Truck的构造函数中的b("Cargo" + name),name未初始化。 -
@RichardCritten,谢谢,我明白了
标签: c++