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

c++ - 解构 *Thing

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 14:47:53 28 4
mua khóa gpt4 Nike

Tôi chắc chắn điều này đã được trả lời ở đâu đó, nhưng tôi thiếu vốn từ vựng để hình thành tìm kiếm.

#include 

lớp học
{
public:
giá trị int;
Điều();

virtual ~Thing() { std::cout << "Đã phá hủy một thứ có giá trị " << value << std::endl }
};

Điều::Điều(int newval)
{
giá trị = giá trị mới;
}

int main()
{
Điều *myThing1 = Điều mới(5);
std::cout << "Giá trị 1: " << myThing1->value << std::endl;

Thing myThing2 = Thing(6);
std::cout << "Giá trị 2: " << myThing2.value << std::endl;

return 0;
}

Kết quả đầu ra chỉ ra rằng myThing2 đã bị hủy, trong khi myThing1 của tôi thì không.

Vậy... tôi có cần phải giải cấu trúc nó theo cách thủ công bằng cách nào đó không? Đây có phải là rò rỉ bộ nhớ? Tôi có nên tránh sử dụng * trong trường hợp này không? Nếu vậy thì khi nào là thời điểm thích hợp?

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

Nguyên tắc vàng là bất cứ nơi nào bạn sử dụngnew, phải được sử dụngxóa bỏ. bạn đang làm việc trên myThing1 bộ nhớ động được tạo ra nhưng bạn không bao giờ giải phóng nó nên nó không bao giờ được gọi myThing1 kẻ hủy diệt.

Điều này có liên quan đến myThing2 Sự khác biệt là ở chỗ đó myThing2 Là một đối tượng phạm vi. vận hành:

Thing myThing2 = Thing(6);

Hoàn toàn khác với:

Điều *myThing1 = Điều mới(5);

Đọc thêm về phân bổ động đây .nhưng gợi ý cuối cùng là bạn nên thận trọng new Từ khóa, đọc thêm về nó ở đây:

Tại sao người lập trình C++ nên hạn chế tối đa việc sử dụng từ 'mới'?

Về c++ - phá hủy *Thing, 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/34931800/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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