San*_*San 5 c++ static-members
我最近接到了一个C++访谈,我被问到,编译器如何区分两个不同类中具有相同名称的静态数据成员?
由于所有静态数据变量都存储在数据段中,因此编译器必须通过这种方式跟踪哪些静态数据属于哪个类,尤其是当它们具有相同名称时.
编辑:我回答了名字错误,但他拒绝说名字错误仅在同一类的成员中使用.
Joh*_*itb 12
这些名称在其中包含了类名.clang编译器的一个例子
class A {
static int i;
};
int A::i = 0;
Run Code Online (Sandbox Code Playgroud)
产量
$ 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
Run Code Online (Sandbox Code Playgroud)
哪里_ZN1A1iE是
$ c++filt _ZN1A1iE
A::i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |