Giá trị mặc định là kế thừa riêng. lấy ví dụ này:
class B { };
class D: B { };
sử dụng kế thừa riêng làm mặc định của nó. Điều này có nghĩa rằng D được tất cả các lĩnh vực và phương pháp B có (nếu chúng ta thực sự tuyên bố bất kỳ) được bảo vệ và công cộng, nhưng không thể được đúc để một B. Do đó, mã này không thành công:
void foo(B* argument) {}
foo(new D); //not allowed
Nếu D công khai kế thừa từ B, sau đó một D có thể được đúc thành một B, và cuộc gọi chức năng này sẽ là tốt.
Sự khác biệt thứ hai là tất cả các thành viên protected và công cộng trong B trở thành tin thành viên trong D.
Điều này thực sự có ý nghĩa gì? Thừa kế công khai có nghĩa là D IS_A B, nhưng thừa kế riêng có nghĩa là "được thực hiện theo". Thừa kế D từ B có nghĩa là bạn muốn tận dụng một số tính năng trong B, nhưng không phải vì D IS_A B hoặc vì có bất kỳ kết nối khái niệm nào giữa B và D.: D
Nguồn
2009-10-14 01:16:33
Sử dụng std :: string over char * và std :: vector trên một con trỏ tới mảng. – GManNickG
Tôi không đồng ý. std :: string thêm một lớp chi phí để cho phép dữ liệu có độ dài thay đổi. Bạn nên xem xét nhu cầu của bạn và chọn một cách khôn ngoan. – sep
Nếu không có kiến thức tốt về ngữ cảnh, lời khuyên để sử dụng 'std :: vectơ' thay vì C-mảng và 'std :: string' thay vì C-strings có giá trị rất ít, nếu có. – AnT