"Z4mainE2"是什么意思?

What does "Z4mainE2" mean?

本文关键字:意思 是什么 Z4mainE2      更新时间:2023-10-16
#include<iostream>
#include<typeinfo>
using namespace std;
int main(){
    class c1{
        public:
        int a ;
    };
c1 obj1;
cout<<typeid(obj1).name();  
}

我在 ideone 上运行它,typeid.name()返回Z4mainE2c1.很明显,c1是类的名称,但Z4mainE2是什么。为什么它不只显示类型名称?

Z4mainE2是"名称重整"的结果。基本上,C++编译器是围绕链接器模型设计的,该模型不直接支持函数重载、运算符甚至类成员等内容。为了支持C++的各种非 C 功能,编译器生成的目标代码会向生成的名称添加特殊序列。虽然损坏的名称通常对程序员不可见或重要,但某些平台上的typeinfo对象会直接公开它们。