Trong những dự án lớn, chúng ta cần phân tách riêng giữa lời định nghĩa phương thức và khai báo phương thức.
Thay vì viết vào một tập tin như thế này:
Mỗi lớp chúng ta nên tách thành 2 tập tin: *.h và *.cpp: // File myclass.h
class MyClass {
public:
void my_method() const; // Method declaration };
// File myclass.cpp
// Include the class declaration #include "myclass.h"
#include <iostream> // Method definition
void MyClass::my_method() const {
std::cout << "Executing \"my_method\"\n"; }
Tài liệu giảng dạy Kỹ Thuật Lập Trình 2 Trang 68
Để định nghĩa phương thức trong tập tin nguồn (.cpp) chúng ta sử dụng toán tử phạm vi :: kết hợp với tên lớp đứng trước tên phương thức để chỉ phưng thức đó thuộc lớp nào. Chúng ta sẽ thêm chỉ thị #include tập tin .h vào trong tập tin nguồn. Xét một ví dụ khác: //pointsplit.h class Point { double x; double y; public:
Point(double x, double y); double get_x() const;
double get_y() const; void set_x(double x); void set_y(double y); };
// Pointsplit.cpp //Point constructor
Point::Point(double x, double y): x(x), y(y) {} // Get the x value
double Point::get_x() const {
return x; }
// Get the y value
double Point::get_y() const {
return y; }
// Set the x value
void Point::set_x(double x) {
this->x = x; }
// Set the y value
void Point::set_y(double v) {
this->y = y; }
Tài liệu giảng dạy Kỹ Thuật Lập Trình 2 Trang 69
Nhiều lập trình viên C++ tách mã nguồn ra như thế này là vì một vài lí do sau: Nếu một lớp được sử dụng ở nhiều chương trình, trình biên dịch phải biên dịch lại phương thức mỗi khi file header (.h) được #include vào file mã nguồn. Nếu được phân tách thì trình biên dịch có thể biên dịch mã nguồn cho file định nghĩa một lần, và khi đó trình liên kết có thể kết nối những đoạn mã đã được biên dịch này với nơi sử dụng.