gpt4 book ai didi

c++ - 编译器如何区分 C++ 中不同类中具有相同名称的静态数据成员?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:12 25 4
gpt4 key购买 nike

我最近接受了一次 C++ 面试,有人问我,编译器如何区分两个不同类中具有相同名称的静态数据成员?

由于所有静态数据变量都存储在数据段中,因此编译器必须有一种方法来跟踪哪些静态数据属于哪个类,尤其是当它们具有相同的名称时。

编辑:我回答了name mangling,他拒绝说name mangling只在同一个类(class)的成员之间使用。

最佳答案

名字与他们的类名混淆了。使用 clang 编译器的示例

class A {
static int i;
};

int A::i = 0;

输出

$ clang++ -cc1 -emit-llvm main1.cpp -o -
; ModuleID = 'main1.cpp'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
target triple = "i386-pc-linux-gnu"

@_ZN1A1iE = global i32 0, align 4

_ZN1A1iE 在哪里

$ c++filt _ZN1A1iE
A::i

关于c++ - 编译器如何区分 C++ 中不同类中具有相同名称的静态数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857503/

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