tại sao hàm tạo mặc định không được trình biên dịch thêm vào cho lớp có chứa các thành viên dữ liệu không đổi. xin vui lòng xem mã dưới đây, trong đó tôi đã tuyên bố thành viên dữ liệu liên tục 'a' và trong khi cố gắng tạo đối tượng cho một lớp 'ClassA' nó nói rằng không có hàm tạo mặc định thích hợp có sẵn. Hãy giúp tôi.tại sao hàm tạo mặc định không có mặt cho một lớp chứa các thành viên dữ liệu const
#include "stdafx.h"
#include <iostream>
using namespace std;
class ClassA
{
private:
const int a;
public :
void print()
{
cout << "hello world" << endl;
}
};
int main()
{
ClassA obj;
obj.print();
return 0;
}
Bạn phải khởi tạo 'a'. – chris
Mặc dù có ý kiến ở nơi khác, khởi tạo rõ ràng cho 'a' là với trình khởi tạo mặc định, cụ thể là' int() ', sẽ khởi tạo bằng 0. Có, đây là (gần như) vô nghĩa, nhưng không ai có một tham chiếu là tại sao nó không phải là có thể cho các nhà xây dựng mặc định? – Keith
@Keith Nó chỉ là một sự lựa chọn của ngôn ngữ. Các thành viên dữ liệu tích hợp không được khởi tạo theo mặc định. – juanchopanza