gpt4 book ai didi

c++ - 定义基类的静态变量

转载 作者:行者123 更新时间:2023-11-30 00:58:00 24 4
gpt4 key购买 nike

我有一个类结构:

A <- B

其中 A 是基类,B 是派生类。一些独立的代码创建了这两个类的对象。A 有一个在 A 和 B 中使用的静态变量(假设为“static_a”)。

我应该在哪里定义这个 static_a ?当我在 A.h 中定义它时,它给我链接器错误,说多重定义。然后我将它移动到 A.cc 文件,编译通过。但是,我很困惑类 B(在 B.h 和 B.cc 中定义,在 A.cc 中看不到定义)是否会获得为变量 static_a 定义的正确值,正如它在 A.cc 中定义的那样? ?

感谢您的帮助!

最佳答案

静态变量定义有点像声明一个extern 变量或一个函数原型(prototype)。它让链接器知道变量或函数存在于所有编译单元的某处,但它不创建变量,它只是说它将存在于某处。它不会使变量存在。

当您将定义放在头文件中时,每个包含该头文件的文件都会重新声明该变量,这就是您会收到链接器错误的原因。您正在创建多个具有相同名称的变量,因此链接器不知道要使用哪一个。

当您将实际定义放入 cc 文件时,您创建变量一次,并且每次有人使用它时在整个项目的其他任何地方,他们都在使用那个。

所以基本上,您所做的一切都是正确的。

关于c++ - 定义基类的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083612/

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