gpt4 book ai didi

c++ - 获取静态成员的地址 C++ FAQ

转载 作者:可可西里 更新时间:2023-11-01 18:18:35 25 4
gpt4 key购买 nike

什么是this C++ FAQ 尝试传达 ?

You can take the address of a static member if (and only if) it has an out-of-class definition :

class AE {
// ...
public:
static const int c6 = 7;
static const int c7 = 31;
};

const int AE::c7; // definition

int f()
{
const int* p1 = &AE::c6; // error: c6 not an lvalue
const int* p2 = &AE::c7; // ok
// ...
}

然而这compiles !

最佳答案

您使用 -O2编译。编译器可以优化掉 const int* p1 = &AE::c6;分配(因为它没有效果)因此它不需要 AE::c6 的地址在最终代码中,这就是它编译的原因。

它在没有优化的情况下给出链接器错误。

如果您开始使用 p1,您还会遇到链接器错误(例如 std::cout << p1 << p2 << std::endl; )Link

关于c++ - 获取静态成员的地址 C++ FAQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302347/

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