Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Khác biệt giữa namespace và class trong C++


Namespace và class là hai khái niệm khác nhau. Class là kiểu dữ liệu (mở rộng struct), chứa thành viên dữ liệu và hàm. Namespace gom nhóm biến/hàm để tránh xung đột tên, không thể khởi tạo đối tượng.

Các khác biệt quan trọng

  • Namespace dùng để nhóm định danh tránh va chạm; class cần tạo instance, namespace thì không.
  • Namespace dùng khai báo using; class không (trừ khi kế thừa).
  • Namespace có thể mở lại bổ sung phần tử qua nhiều đơn vị dịch (translation units); class không thể.
  • Namespace vô danh hợp lệ; class vô danh gây lỗi.

Ví dụ namespace có thể mở lại

namespace my_namespace { int function1(); }
namespace my_namespace { int function2(); } // Hợp lệ

Class không thể khai báo lại

class my_class { int function1(); };
class my_class { int function2(); }; // Lỗi

Namespace vô danh vs class vô danh

namespace { int function1(); } // Hợp lệ
class { int function1(); };    // Lỗi