Viết thêm Tái cấu trúc C ++ thân thiện
Trong C ++, bạn hoàn toàn không phải sử dụng các tiêu đề. Bạn có thể định nghĩa toàn bộ đối tượng trong một tệp giống như với C # hoặc Java. Các nhà phát triển C thường sẽ chỉ giữ các cuộc gọi bên ngoài trong một tệp tiêu đề. Tất cả các cuộc gọi nội bộ sẽ được xác định trong tệp .c. Với cùng một mã thông báo, bạn có thể dự trữ các tệp C ++ .h của mình cho các lớp / giao diện (các lớp trừu tượng ảo thuần túy) / vv. được dự định chia sẻ bên ngoài DLL. Đối với các lớp / cấu trúc / giao diện nội bộ, v.v. bạn chỉ cần bao gồm tệp .cpp bạn cần:
#include<myclass.cpp>
Đây dường như không phải là cách tiếp cận phổ biến nhất, nhưng đó là C ++ hợp pháp. Nó chắc chắn sẽ là một khả năng cho tất cả các mã nội bộ của bạn. Điều này cho phép mã nội bộ và tập hợp các lớp thay đổi hoàn toàn hơn rất nhiều trong khi cung cấp giao diện ổn định hơn cho mã bên ngoài thư viện / tệp thực thi của bạn để tương tác.
Có cả lớp của bạn trong một tệp sẽ giúp bạn dễ dàng thực hiện những gì bạn muốn. Nó sẽ không giải quyết vấn đề đổi tên một phương thức và phải tìm kiếm mọi nơi mà phương thức đó được gọi, nhưng nó sẽ đảm bảo bạn có các thông báo lỗi dễ hiểu hơn. Không có gì tệ hơn việc tiêu đề của bạn khai báo một phương thức theo một cách, nhưng bạn thực hiện nó theo cách khác. Mã khác gọi tệp tiêu đề sẽ biên dịch đúng và bạn sẽ nhận được ngoại lệ liên kết, trong khi tệp triển khai sẽ là mã phàn nàn rằng phương thức không được xác định. Khi bạn xác định mọi phương thức tại chỗ (trong khai báo lớp thực tế), bạn sẽ nhận được thông báo lỗi tương tự cho dù tệp nào có chứa nó.
Bạn cũng có thể muốn xem xét câu hỏi này: Các công cụ tái cấu trúc tốt cho C ++
Làm thế nào C / C ++ giải quyết các tệp tiêu đề / thực hiện
Ở cấp độ C cơ sở (và C ++ được xây dựng trên nền tảng đó), các tệp tiêu đề khai báo lời hứa của hàm / struct / biến đủ để cho phép trình biên dịch tạo tệp đối tượng. Tương tự các tệp tiêu đề C ++ khai báo lời hứa của các hàm, cấu trúc, lớp, v.v ... Đây là định nghĩa mà trình biên dịch sử dụng để dự trữ không gian trong ngăn xếp, v.v.
Các tập tin .c hoặc .cpp có triển khai. Khi trình biên dịch chuyển đổi từng tệp thực hiện thành một tệp đối tượng, có các móc nối với các khái niệm chưa được thực hiện (những gì đã được khai báo trong tiêu đề). Trình liên kết liên kết các hook với các cài đặt trong các tệp đối tượng khác và tạo ra một nhị phân lớn hơn bao gồm tất cả các mã (thư viện dùng chung hoặc tệp thực thi).
Cụ thể VS
Khi làm việc với những người trong Visual Studio, có một số trình hướng dẫn giúp mọi thứ dễ dàng hơn một chút. Trình hướng dẫn lớp mới sẽ tạo cặp tệp thực hiện và tiêu đề phù hợp của bạn. Thậm chí còn có một tính năng trình duyệt lớp sẽ cho phép bạn khai báo các phương thức mới. Nó sẽ đưa định nghĩa vào tiêu đề và cuống triển khai trong tệp .cpp. Visual Studio đã có những tính năng đó trong hơn một thập kỷ (miễn là tôi đã sử dụng chúng).