a fait un test simple et a constaté que, "= défaut" ne fonctionne que pour les fonctions membres spéciales, comme ceci:C++ 11: Quand devons-nous spécialiser "= default" pour la fonction de membre par défaut?
#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 fera rapport erreur de compilation:
error: only special member functions may be defaulted
Donc, si seulement « membre spécial function "est autorisé, ce" = default "semble inutile: parce que si je ne donne pas de définition de fonctions membres spéciales dans" Derived ", le compilateur en générera un pour moi, égal à" = default ".
Alors, ma question est: pourquoi et quand avons-nous besoin de "= default"?