Menu
CoddyTech

Tệp header và tệp nguồn

Thuộc phần Lập trình hướng đối tượng trong hành trình C++ của Coddy. Bài học 3 trên 104.

Trong C++, code được chia thành các tệp header (.h) để khai báo và các tệp mã nguồn (.cpp) để triển khai.

Tệp tiêu đề có include guard (helpers.h)

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

Tệp nguồn chứa các phần triển khai (helpers.cpp)

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

Sử dụng chúng trong hàm main

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

Đầu ra:

Hello, Alice!
8

Các header guard (#ifndef, #define, #endif) ngăn một tệp header được đưa vào nhiều lần. Tệp .h khai báo những gì tồn tại (các nguyên mẫu), còn tệp .cpp định nghĩa cách chúng hoạt động (các phần triển khai).

challenge icon

Thử thách

Trung bình

Tạo ba hàm trợ giúp, chia giữa tệp tiêu đề và tệp mã nguồn:

  • helpers.h: Khai báo hàm với các header guard
  • helpers.cpp: Định nghĩa hàm

Các hàm cần tạo:

  • greet(name): trả về "Hello, <name>!"
  • ageInTenYears(age): trả về age + 10
  • checkAdult(name, age): trả về "<name> is an adult" nếu age >= 18, nếu không thì trả về "<name> is a minor"

Tự làm thử

#include <iostream>
#include "helpers.h"

int main() {
    std::string name;
    int age;
    std::getline(std::cin, name);
    std::cin >> age;
    
    std::cout << greet(name) << std::endl;
    std::cout << "In 10 years you will be " << ageInTenYears(age) << std::endl;
    std::cout << checkAdult(name, age) << std::endl;
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch C++ online