复制 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= 实现,那么您将拥有深层复制(正确复制对象)
我是 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= 实现,那么您将拥有深层复制(正确复制对象)