Name spaces trong C++ | CppDeveloper

Chúng tôi không muốn bạn viết các chương trình có lỗi, nhưng lần này chúng tôi khuyến khích bạn biên dịch code sau đây →

1

2

3

4

5

6

7

#include <iostream>

 

int

main

(

void

)

{

    

cout

<

<

“Play it, Sam”

<

<

endl

;

    

return

0

;

}

Bạn có thể tại sao code này lại sai không ?

Yes, bởi vì nó thiếu dòng này:

1

using

namespace

std

;

Dòng này có quan trọng không ? Yes, rất quan trọng. Trình biên dịch sẽ bị mất phương hướng hoàn toàn nếu chúng ta cố buộc nó sử dụng tên mà không xác định name space mà chúng thuộc về (hai cái tên đó là: cout và endl). Khi đó bạn sẽ gặp phải rất nhiều lời phàn nàn, lèm bèm từ trình biên dịch.

Có cách nào để ràng buộc cout endl vào không gian tên ở nhà của chúng không ? Có, nhưng chúng ta cần phải sử dụng một cú pháp đặc biệt cho mục đích này. Nó kiểu như thế này:

home_name_space::entity_name

Gợi ý: name space của cả cout và endl được gọi là “std” (viết tắt của standard). Bạn có thể viết lại chương trình để làm cho nó chính xác và không sử dụng cụm từ “using namespace” không ?

1

2

3

4

5

6

7

#include <iostream>

 

int

main

(

void

)

{

    

std

:

:

cout

<

<

“Play As time goes by”

<

<

std

:

:

endl

;

    

return

0

;

}

Chúng tôi đã sửa đổi mã một chút. Bạn có thế nhìn thấy sự thay đổi không ? Chúng tôi đã định danh tất cả các cái tên mơ hồ với một tiền tố bao gồm home name space (std) và một toán tử đặc biệt được viết là “::”. Tên chính thức của toán tử đó là “scope resolution operator”. Và cách làm kiểu như này là một cách khác của việc sử dụng câu lệnh “using namespace”