【发布时间】:2020-09-07 08:34:10
【问题描述】:
我是 c++11 的新手,我知道 typeid().name() 和 nullptr。我只是在玩代码,但我发现sizeof(nullptr) 是4,而且typeid(str).name() 是一组复杂的字符NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
#include<iostream>
#include<string>
#include<typeinfo>
int main(){
std::string str;
std::cout<<sizeof(nullptr)<<std::endl;
std::cout<<typeid(str).name();
return 0;
}
我对输出有点困惑。谁能给我解释一下??
【问题讨论】:
-
您希望它们变成什么?你可以看到here
std::string只是std::basic_string<char>的一个名字,而那个还有其他类型参数只是默认的。 -
nullptr可能会导致std::nullptr_t对象。这个对象是什么以及它包含什么,是实现定义的,并不真正相关。因此nullptr的大小也无关紧要。 -
对于以后的问题,请每个问题问一个问题。在这里,您要问的是两个不同且不相关的事情,这使问题变得广泛且没有重点。也请花一些时间阅读the help pages,阅读SO tour,阅读How to Ask,以及this question checklist。
标签: c++ string c++11 nullptr typeinfo