我在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?
答案 0 :(得分:3)
C将始终执行“浅层”复制。如果变量是指针,则将复制该值。如果变量是结构,则将复制结构的内容(如果内容恰好包含指针,则它们的值将像其他所有内容一样复制)。
答案 1 :(得分:0)
如果对象FontHandle定义了正确的复制构造函数或提供了operator =的正确实现,那么你将获得深层复制(正确复制对象)