复制 C 对象

Copying C objects

我是 C 的新手,想问一个关于复制行为的问题。我在看Scott Meyers'C++,他在书上说C++可以看作是语言的组合,我们应该区分所谓的C部分来自 C++ 部分。现在,如果我们必须使用一些包含以下内容的原生 C API:

FontHandle getFont(); //From, C API

void releaseFont(FontHandle fh); //From the same C API

据我所知,C 语言不允许通过复制构造函数定义自定义复制行为。那么,如果我编写以下内容,我应该期望发生什么:

FontHandle f1 = getFont();
FontHandle f2 = f1; //What's going to happen here? Deep or shallow copy?

C 将始终进行 'shallow' 复制。如果变量是指针,则值将被复制。如果变量是一个结构,结构的内容将被复制(如果内容恰好包含指针,它们的值将像其他所有内容一样被简单地复制)。

如果对象 FontHandle 定义了正确的复制构造函数或提供了正确的 operator= 实现,那么您将拥有深层复制(正确复制对象)