【问题标题】:What is this number associated with my typeid? [duplicate]这个数字与我的 typeid 相关联是什么? [复制]
【发布时间】:2015-12-18 18:25:27
【问题描述】:

程序:

#include<iostream>
#include<typeinfo>
using namespace std;

class Base
{
        public:virtual void func(){}
};

class Derived1 : public Base {};

int main()
{
        Derived1 d;
        cout<<typeid(d).name()<<endl;
        return 0;
}

输出:

8Derived1

这个数字8是多少?

编译器:g++-4.8.4-2ubuntu1~14.04

【问题讨论】:

  • 我不认为答案,问题8代表名称中的字符数。
  • @ShafikYaghmour 好吧,这可能是一种实现(返回其大小 + 名称),但 c++ 规范不保证:“返回一个实现定义的以空字符结尾的字符串,其中包含类型。不提供任何保证 (...)"
  • @DavidNogueira OP 专门询问 gcc,如问题中所述
  • @ShafikYaghmour 确实,我无法提供有关 g++-4.8.4-2 实现的更多详细信息。

标签: c++ inheritance typeid


【解决方案1】:

它是实现定义的,没有内在含义。检查std::typeinfo::name() reference

返回包含类型名称的实现定义的以空字符结尾的字符串。不提供任何保证,特别是返回的字符串对于多种类型可以是相同的,并且在同一程序的调用之间会发生变化。

【讨论】:

  • 想知道它的用途是什么?这种描述似乎毫无用处。
  • @StillLearning 我会指出它可以被一些平台锁定的应用程序/库使用,但它可能不应该被最终用户使用。只是我的 2 美分。
猜你喜欢
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2021-07-26
  • 2016-07-10
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多