以下是引用令狐少侠56在2016-9-6 09:44:56的发言:
那int 类型的变量 有构造函数吗?
没有
int a = int(); 可以这么写,但不是构造函数,而是叫 zero-initialization
甚至还可以
template<class T>
void foo()
{
T* p = static_cast<T*>( ::operator new(sizeof(T)) );
p->~T();
}
int main()
{
foo<int>();
}
其中 p->~T(); 看起来是调用其析构函数,其实编译器会忽略内建类型的这种调用