【发布时间】:2017-04-13 01:59:12
【问题描述】:
做了一个简单的测试,发现“=default”只对特殊的成员函数有效,像这样:
#include<cstdio>
#include<utility>
struct Base{
Base(int){printf("Base(int)\n");}
};
struct Derived{
Derived(int)=default;
};
int main(){
Derived d(0);
return 0;
}
clang会报编译错误:
error: only special member functions may be defaulted
所以如果只允许“特殊成员函数”,这个“=default”似乎没有用:因为如果我在“Derived”中没有给出特殊成员函数的定义,编译器会为我生成一个,等于使用“=default”。
所以我的问题是,为什么以及何时需要“=default”?
【问题讨论】:
标签: c++ function c++11 default member