复制C对象

时间:2015-09-29 04:03:11

标签: c++ c copy

我在C中很新,想问一个关于复制行为的问题。我正在阅读Scott Meyers' C ++和他在书中说C++可能被视为语言的组合,我们应该将所谓的 C部分C++部分区分开来。现在,如果我们必须使用包含以下内容的一些原生C API:

FontHandle getFont(); //From, C API

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

据我所知,C语言不允许通过copy-custructors定义自定义复制行为。那么,如果我写下以下内容,我应该发生什么呢?

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

2 个答案:

答案 0 :(得分:3)

C将始终执行“浅层”复制。如果变量是指针,则将复制该值。如果变量是结构,则将复制结构的内容(如果内容恰好包含指针,则它们的值将像其他所有内容一样复制)。

答案 1 :(得分:0)

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