我有一个类在堆上分配内存然后析构函数释放它.我的拷贝构造函数由于某种原因从未被调用过,我不明白为什么.这是我的实现:
AguiBitmap::AguiBitmap( const AguiBitmap &bmp )
{
this->nativeBitmapPtr = al_clone_bitmap(bmp.nativeBitmapPtr);
}
AguiBitmap::AguiBitmap( char *filename )
{
if(!filename)
{
nativeBitmapPtr = 0;
return;
}
nativeBitmapPtr = al_load_bitmap(filename);
if(nativeBitmapPtr)
{
width = al_get_bitmap_width(nativeBitmapPtr);
height = al_get_bitmap_height(nativeBitmapPtr);
}
else
{
width = 0;
height = 0;
}
}
ALLEGRO_BITMAP* AguiBitmap::getBitmap() const
{
return nativeBitmapPtr;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我做类似的事情时:
AguiBitmap bitmap;
bitmap = AguiBitmap("somepath");
Run Code Online (Sandbox Code Playgroud)
永远不会调用复制构造函数代码(设置断点).因此,当临时对象被破坏时,我在临时对象的重建对象中具有无效指针的问题变得无效.
我该怎么做才能调用我的拷贝构造函数?
谢谢
c++ ×1