cuốn sách gpt4 ai đã làm

c++ - 关于具有自引用的 C++ 类

In lại Tác giả: Taklimakan 更新时间:2023-11-03 00:15:07 25 4
mua khóa gpt4 Nike

Tôi hơi bối rối...

Tại sao điều này được cho phép trong C++:

int tĩnh t = 0;

hạng A
{
public:
A() : m(t++)
{

cout << "C:" << m << endl;
nếu(t >= 5)
{
A a; // <<<< ----- dòng NÀY
ném(a);
}
}

int m;
};

Nhưng đây không phải là:

int tĩnh t = 0;

hạng A
{
public:

A() : m(t++)
{

cout << "C:" << m << endl;
}

A a; // <<<< ----- dòng NÀY

int m;
};

Cái thứ hai không biên dịch như mong đợi (vâng, tôi biết tại sao nó không biên dịch: tại thời điểm này trong mã MỘT vẫn chưa đầy đủ)...

Nhưng... cái đầu tiên biên dịch rất tốt (và thực hiện những gì nó phải làm, đó là: làm hỏng ứng dụng khi có những câu lệnh như thế này:Một [10]; ). MỘT Đây có phải là kiểu hoàn chỉnh trong hàm tạo không? Bạn cũng có thể chỉ cho tôi một số mục tiêu chuẩn C++ cho tình huống này không?

câu trả lời hay nhất

Khi bạn khai báo bất kỳ biến nào, trình biên dịch sẽ biết kích thước của nó. Trong ví dụ thứ hai, bạn MỘT Được tạo ở MỘT đối tượng, do đó trình biên dịch sẽ không thể tính toán việc phân bổ MỘT Kích thước của bộ nhớ.

Giới thiệu về c++ - Về các lớp C++ có tự tham chiếu, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/22507947/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress