Một bất lợi có thể là thiếu thông tin ẩn/đóng gói.
Tôi muốn có tệp tiêu đề tối thiểu nhất có thể. Điều đó có nghĩa là tôi không bắt buộc phải tiếp tục hỗ trợ rất nhiều tính năng. Nếu tôi muốn thay đổi một cái gì đó, và cái gì đó đã không được tiếp xúc trong tiêu đề công cộng, có một cơ hội tốt hơn tôi có thể thay đổi nó trong nội bộ để lớp mà không ảnh hưởng đến bất cứ ai khác.
EDIT:
Luke hỏi cho một ví dụ, vì vậy đây ya đi:
Giả sử bạn có một lớp được gọi là Car
. Và, điều duy nhất bạn xây dựng nó là lấy từ điểm A đến điểm B. Tôi, cá nhân, tôi muốn giữ tập tin tiêu đề của tôi: một lớp được gọi là Car
và một phương thức có tên là Drive
. Từ cách bạn diễn đạt câu hỏi của bạn ("tất cả các lớp mà tôi có thể") tôi mong đợi sẽ tìm các lớp như "DieselEngine", "PetrolEngine", "HybidEngine" và như vậy trong tệp tiêu đề của bạn. Vấn đề với điều này là những người khác làm việc trong dự án của bạn (hoặc, bạn, theo thời gian) bắt đầu sử dụng những lớp tiếp xúc đó. Bây giờ, hai năm sau, bạn quyết định "Hrm ... lớp học của PetrolEngine thực sự gây ra vấn đề cho tôi. Tôi nghĩ tôi sẽ loại bỏ nó và thay thế nó bằng HybridEngine hoàn toàn trong lớp xe của tôi" - vâng, bây giờ là PetrolEngine được bao gồm trong 100 tệp khác vì lý do bạn không hiểu - và bây giờ bạn buộc phải giữ cho PetrolEngine xung quanh (và làm việc như trước đây) cho tất cả những người khác đã sử dụng nó trong một số nói rằng bạn không thực sự chắc chắn về - bởi vì bạn không có "hợp đồng" vững chắc về cách bạn muốn lớp đó được sử dụng ngay từ đầu. Đó là một chi tiết thực hiện những gì bạn thực sự muốn thực hiện - xây dựng một chiếc xe hơi.
EDIT để thảo luận ý kiến về ẩn thông tin:
Nếu tất cả các bạn đang làm là đúng về phía trước khai khống tên lớp/struct - tốt, tôi đoán tôi sẽ hỏi "tại sao" một lần nữa. Nếu tôi là người tiêu dùng tệp và lớp tiêu đề của bạn và tôi không thể thực hiện bất kỳ điều gì với lớp đó - và nó không được hiển thị dưới dạng tham số hoặc kiểu trả về của API lớp chính của bạn - thì tại sao lại hiển thị nó ?
Nếu bạn đang sử dụng nó để kiểm tra an toàn loại thời gian biên dịch cho cấu trúc dữ liệu mờ - tốt - đó là một điều. Tuy nhiên, cách bạn phrased câu hỏi của bạn làm cho nó âm thanh với tôi như tất cả mọi thứ đã đi trong tập tin tiêu đề như là một vấn đề của khóa học.
Ít cơ hội uống cà phê trong khi xây dựng đầy đủ? –