Giả sử tôi có một cấu trúc với hai con trỏ, mỗi con trỏ trỏ đến một đối tượng có một destructor được thực thi. Cũng giả định rằng điểm đầu đến một cấu trúc Listnode có một giá trị khác NULL * học sinh và * tiếp theo:Việc xóa con trỏ của cấu trúc cũng sẽ xóa con trỏ trong cấu trúc?
struct Listnode {
Student *student;
Listnode *next;
};
Listnode *head = new Listnode;
Nếu tôi sử dụng từ delete
dự trữ trên Listnode con trỏ 'đầu' nó sẽ gọi hàm hủy trong vòng cấu trúc đó lớp học sinh và lớp Listnode tương ứng với điểm 'sinh viên' và 'tiếp theo'. Nói cách khác, sẽ xóa * đầu cũng xóa * sinh viên và * đầu được cung cấp tiếp theo là con trỏ duy nhất cho Listnode
Vì vậy, bạn có thể triển khai trình phá hủy cho cấu trúc? –
@PatMurray Tuyệt đối! Dù bạn có thể làm gì trong lớp, bạn cũng có thể làm trong 'cấu trúc'. Trong thực tế, sự khác biệt duy nhất là các thành viên của lớp trước khi khai báo truy cập đầu tiên (công khai, riêng tư hoặc được bảo vệ) được coi là riêng tư, trong khi các thành viên của một cấu trúc được coi là công khai. – dasblinkenlight
Structs có thể kế thừa như các lớp, và truy cập thừa kế mặc định là public cho struct và private cho các lớp. Một sự khác biệt, nhưng dọc theo cùng một dòng. – MSalters