Tôi bối rối không biết vấn đề có thể là gì nếu một hàm tạo được kế thừa từ một lớp cơ sở. Cpp Primer Plus nói,
Các constructor khác với các phương thức lớp khác ở chỗ chúng tạo các đối tượng mới, trong khi các phương thức khác được gọi bởi các đối tượng hiện có . Đây là một lý do các nhà xây dựng không được thừa kế . Kế thừa có nghĩa là một đối tượng dẫn xuất có thể sử dụng một phương thức lớp cơ sở, nhưng, trong trường hợp các hàm tạo, đối tượng không tồn tại cho đến khi hàm tạo hoàn thành công việc của nó.
Tôi hiểu các constructor được gọi trước khi hoàn thành việc xây dựng đối tượng.
Làm thế nào nó có thể dẫn đến các vấn đề nếu một lớp con kế thừa ( Bằng cách kế thừa tôi có nghĩa là lớp con có thể ghi đè phương thức lớp cha, v.v. Không chỉ truy cập vào phương thức lớp cha )) hàm tạo cha mẹ?
Tôi hiểu rằng không nhất thiết phải gọi một nhà xây dựng từ bên trong một mã [không phải là tôi biết.] Ngoại trừ trong khi tạo các đối tượng. Thậm chí sau đó bạn có thể làm như vậy bằng cách sử dụng một số cơ chế để gọi bộ dẫn cha mẹ [Trong cpp, sử dụng ::
hoặc sử dụng member initialiser list
, Trong java bằng cách sử dụng super
]. Trong Java có một thực thi để gọi nó trong dòng đầu tiên, tôi hiểu rằng để đảm bảo đối tượng cha mẹ được tạo trước và sau đó tiến hành xây dựng đối tượng con.
Nó có thể ghi đè lên nó. Nhưng, tôi không thể đưa ra những tình huống có thể gây ra vấn đề. Nếu đứa trẻ thừa kế hàm tạo cha mẹ thì điều gì có thể sai?
Vì vậy, đây chỉ là để tránh kế thừa các chức năng không cần thiết. Hoặc là có nhiều đến nó?