- vừa được xem lúc

Tác dụng của using namespace std trong C++ là gì?

0 0 18

Người đăng: Tờ Mờ Sáng học Lập trình

Theo Viblo Asia

Đây chắc hẳn là một trong những câu hỏi phổ biến của nhiều bạn khi mới học lập trình C++

Nếu dịch word-by-word thì "name" là "tên", "space" là "không gian". Suy ra, "namespace" tức là "không gian tên". Và using namespace std tức là “sử dụng không gian tên std” (std là viết tắt của “standard“)

Nhờ có câu lệnh này mà chương trình có thể hiểu các đối tượng như cin, cout đến từ namespace nào

Các namespace trong C++ sẽ giúp các đoạn code tách biệt lẫn nhau trong những "không gian" riêng

Cùng xem ví dụ dưới đây:

image.png

Trong đoạn code này mình tự khai báo ra một namespace riêng có tên là MyNamespace.

Trong namespace này mình lại khai báo 2 class có trùng tên là Person.

Khi mình sử dụng class Person để khởi tạo đối tượng trong hàm main(), chương trình ngay lập tức báo lỗi “Person” is ambiguous, tức là nó “mơ hồ” không hiểu phải sử dụng class Person ở trên hay Person ở dưới.

Từ đó chúng ta có thể kết luận: Trong cùng một namespace sẽ không được phép có 2 class có tên giống nhau

Để khắc phục lỗi này, mình có thể sửa tên class thứ hai thành Person2, để tránh trùng tên với class thứ nhất

Hoặc mình cũng có thể tạo thêm một namespace khác, và đưa 1 trong 2 class Person này sang namespace mới vừa tạo. Sau đó, mình sẽ chỉ định rằng muốn sử dụng class Person của namespace nào bằng toán tử :: Khi ấy,**** việc tồn tại 2 class cùng có tên là Person, nhưng nằm ở 2 namespace khác nhau, thì lại hoàn toàn hợp lệ****

image.png

Khi đi làm, các bạn cũng sẽ thấy các anh chị tiền bối sẽ hay sử dụng toán tử :: hơn là using namespace, để giúp tránh lỗi xung đột tên giữa các namespace với nhau

image.png

Ngoài ra, một namespace không nhất thiết chỉ xuất hiện trong 1 file, mà nó có thể nằm ở nhiều file riêng lẻ. Cậu có thể xem source code của các thư viện iostream, heap, deque, ... cũng sẽ thấy sẽ thấy sự xuất hiện của namespace std bao bọc lấy xung quanh đoạn code của các thư viện này. Điều này chỉ ra rằng: những hàm, biến, class, ... được khai báo bên trong đó đều thuộc về namespace std

iostream.png

stlheap.png

stldeque.png

Đó cũng là lý do tại sao khi include các thư viện này, các cậu chỉ cần using namespace std là có thể sử dụng được các biến, hàm, class, ... nằm trong tất cả những thư viện ấy

Hi vọng kiến thức này hữu ích với cậu. Hẹn gặp lại 👋

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học lập trình game cần những gì?

Lập trình game là làm gì. Các ngôn ngữ các bạn có thể sử dụng để lập trình game : C, C++, C#, Java, Python,... Các bước cơ bản để lập trình game. . Hiển thị: Đã là game thì hiển thị không thể thiếu, lúc đầu các bạn chỉ làm cho phần hiển thị thật đơn giản, các bạn đừng quá chú tâm vào việc làm sao ch

0 0 44

- vừa được xem lúc

[MFC] Http request with winsock2.h

Giới thiệu. Xin chào, trong bài này mình sẽ giới thiệu 1 số lưu ý khi sử dụng thư viện winsock2.h (thư viện window socket) sử dụng trong window app. Đầu tiên, bạn sẽ dễ dàng search được 1 ví dụ cụ thể trên document của winsock2.

0 0 35

- vừa được xem lúc

Design parttern

Builder. 1. Ý tưởng. Builder là một mẫu thiết kế sáng tạo cho phép bạn xây dựng các đối tượng phức tạp theo từng bước.

0 0 32

- vừa được xem lúc

Kỹ thuật viết mã nguồn hiệu quả

Kỹ thuật viết mã nguồn hiệu quả? Hôm nay bài viết này mình không đề cập tới thuật toán, hãy coi như rằng chúng ta đã có thuật toán tốt nhất có thể và bây giờ chúng ta phải làm gì để có thể tăng tính hiệu quả của code. Bài viết này mình sẽ lấy ngôn ngữ lập trình C/C++ để minh họa về các hàm, các thao

0 0 38

- vừa được xem lúc

Singleton Design pattern

Singleton Design pattern. 1. Vấn đề. - Ý tưởng:.

0 0 35

- vừa được xem lúc

So sánh Python và C++

Cuộc tranh luận giữa Python và C ++ là một chủ đề hấp dẫn vì cả hai ngôn ngữ lập trình đều rất khác nhau về cú pháp, tính đơn giản, cách sử dụng và cách tiếp cận tổng thể để lập trình. Vì vậy, mọi người cảm thấy khó khăn khi lựa chọn ngôn ngữ lập trình nào để học.

0 0 38