【发布时间】:2014-03-04 23:53:12
【问题描述】:
谁能给我解释一下为什么...
DataStructure<MyClass> ds;
cin >> size;
ds = DataStructure<MyClass>(size);
导致我的程序崩溃,但是...
cin >> size;
DataStructure<MyClass> ds = DataStructure<MyClass>(size);
没有?
我认为这与我使用默认构造函数的程序有关,然后尝试使用隐式复制构造函数,但我不确定。
为了提供更多上下文,我正在创建一个哈希表类,在默认构造函数中,我将带有数据的数组初始化为 nullptr,在带有 size 参数的构造函数中,我使用数据创建数组到new T * [size] 并将每个元素设置为nullptr。
Constructor without any parameters:
this->data = nullptr;
对比
Constructor with size parameter:
this->data= new T * [size];
for(int i = 0; i< size; i++)
{
data[i] = nullptr;
}
【问题讨论】:
-
DataStructure模板已损坏。将其退回给供应商并要求退款。 -
Foo a; a = Foo(bar);!=Foo a = Foo(bar); -
a的值是否相同?如果不是,你能解释一下为什么不吗? -
也许你可以发布你的构造函数和复制构造函数
-
构造函数贴出来了,我没有拷贝构造函数。