gpt4 book ai didi

c++ - 类(class)联动

转载 作者:太空宇宙 更新时间:2023-11-04 16:29:54 26 4
gpt4 key购买 nike

类有外部链接吗?如果是这样,为什么我不能让以下内容在 gcc 上工作?

// mycpp1.cpp

class MyClass
{
int x;
// ......
};

`

// mycpp2.cpp

class MyClass; // why doesn't this work?

我已经做了一些谷歌搜索并解决了这个问题,

C++ 标准

(3.5/4) a named class (clause 9), or an unnamed class defined in a typedef declaration in which the class has the typedef name for linkage purposes (7.1.3);

我可以只包含文件,但链接的目的是什么?

最佳答案

为什么我一半同意 Nawez 的观点,你不应该太担心链接,很高兴理解它,所以你知道为什么编码模式你正在使用作品(以及为什么其他模式没有)。链接定义了如何名称(符号)绑定(bind)到实体(变量、函数、类型、ETC。)。外部链接意味着名称(或合格版本它的)绑定(bind)到所有翻译单元中的同一个实体:在你的在这种情况下,MyClass 在所有翻译单元中都是同一个类。这并不意味着所有翻译单元都自动知道它是怎么回事定义;只是 mycpp1.cpp 中的 MyClassmycpp2.cpp 中的 MyClass。由于与编译器相关的各种原因和链接器技术,您仍然必须在每个源中提供定义(最好通过包含的方式)使用它,但是这些定义必须相同(这就是首选 include 的原因),因为编译器会生成将它们视为相同的代码。

关于c++ - 类(class)联动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com