Hiểu biết cơ bản của tôi là không có triển khai cho một chức năng ảo thuần túy, tuy nhiên, tôi được cho biết có thể có triển khai cho chức năng ảo thuần túy. class A { public: virtual void f() = 0; }; void A::f() { cout<<"Test"<<endl; } …
Có sai không khi viết: class A { public: virtual ~A() = 0; }; cho một lớp cơ sở trừu tượng? Ít nhất là nó biên dịch trong MSVC ... Nó có bị sập khi chạy không?
Tôi hiểu sự cần thiết của một kẻ hủy diệt ảo. Nhưng tại sao chúng ta cần một kẻ hủy diệt ảo thuần túy? Trong một trong những bài viết của C ++, tác giả đã đề cập rằng chúng ta sử dụng hàm hủy ảo thuần khi chúng ta …
Chúng tôi luôn khai báo một hàm ảo thuần túy là: virtual void fun () = 0 ; Tức là, nó luôn được gán cho 0. Điều tôi hiểu là điều này là để khởi tạo mục nhập vtable cho hàm này thành NULL và bất kỳ giá trị nào …
Đôi khi tôi nhận thấy các chương trình bị lỗi trên máy tính của mình với lỗi: "lệnh gọi hàm thuần ảo". Làm thế nào để các chương trình này biên dịch ngay cả khi không thể tạo một đối tượng của một lớp trừu tượng?
Hôm nay tôi đã đọc về chức năng thuần túy, đã nhầm lẫn với việc sử dụng nó: Một hàm được cho là thuần túy nếu nó trả về cùng một bộ giá trị cho cùng một bộ đầu vào và không có bất kỳ tác dụng phụ nào có …