sau Mã C++ 11 biên dịch thành công trên GCC của tôi 4.8:C++ 11 tin constructor mặc định
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
Tuy nhiên sau đây đưa ra một lỗi biên dịch:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
Tại sao đầu tiên một thành công? Không nên xây dựng mặc định tư nhân cấm tạo một đối tượng thông qua NonStack a;
?
Mã của bạn thực sự [biên dịch] (http://coliru.stacked-crooked.com/a/55199811d96f1af7) trên gcc4.8, nhưng 4.9 từ chối nó (như nó phải). – Praetorian
Câu hỏi này sẽ tốt hơn nếu có câu hỏi trong đó. –
Bạn cũng có thể '= xóa;' hàm tạo. Nó sẽ hoạt động như mong đợi. – glampert