考虑以下代码,其中构造了一个变量默认值并构造了另一个值:
#include <iostream>
#include <typeinfo>
struct A
{
A() : m_() {}
A(int m) : m_(m) {}
int m_;
};
int main()
{
A a, b(), c(5);
std::cout << typeid(a).name() << std::endl;
std::cout << typeid(b).name() << std::endl;
std::cout << typeid(c).name() << std::endl;
return 0;
}
使用 GCC 4.8,输出为
一个
一个 ()
一个
因此a,c
,b
尽管它们引用相同的结构/类,但它们具有不同的类型。怎么会这样?
(当然,这是一个从复杂代码问题派生的最小示例。在那里,我得到了类似A
vs的东西,A(int)
但我还不能重现它。)