Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Có nên sử dụng "using namespace std" hay không?

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Có nên sử dụng "using namespace std" hay không?

    A: Có nên sử dụng “using namespace std” hay không?
    Q: Câu trả lời là KHÔNG

    Mọi người thường không thích việc phải gõ std:: ở mọi nơi, họ thích sử dụng “using namespace std” hơn vì chỉ với một vài thao tác gõ phím trình dịch sẽ thấy được tất cả các tên trong namespace std. Tuy nhiên điều đó cũng có nghĩa là trình dịch sẽ nhìn thấy cả các tên của namespace std mà bạn không hề có ý định sử dụng chúng. Nghĩa là bạn có thể vô tình tạo ra các tên xung đột với nhau hoặc các tên có ý nghĩa không rõ ràng. Ví dụ, chương trình của bạn sử dụng một biến đếm hoặc một hàm tên là count. Tuy nhiên thư viện chuẩn cũng có một hàm tên là count và điều này có thể gây ra sự nhập nhằng.
    Ý nghĩa của việc sử dụng các namespace là để ngăn ngừa việc xung đột giữa các đoạn code được phát triển một cách độc lập. Việc sử dụng “using namespace XYZ” (hay còn gọi là using-directive) sẽ đặt một namespace vào một namespace khác và điều này đi ngược lại với mục đích ban đầu của các namespace.
    Sử dụng using-directive là cách đơn giản nhất để chuyển các chương trình C++ cũ sang việc sử dụng các namespace. Tuy nhiên bạn không nên tiếp tục sử dụng chúng trong các chương trình mới.

    Nếu vẫn muốn tránh việc gõ std:: ở mọi nơi, bạn có thể sử dụng using-declaration để chỉ rõ ra các tên mà trong namespace std mà bạn muốn sử dụng. Ví dụ đoạn code dưới đây sử dụng using-declaration để chỉ rõ ra bạn muốn sử dụng và chỉ sử dụng tên cout của namespace std mà thôi:
    C++ Code:
    1. #include < iostream >
    2. #include < vector >
    3. void f(const std::vector& v)
    4. {
    5.     using std::cout; // Sử dụng tên cout trong namespace std
    6.     cout << "Values:";
    7.     for (std::vector::const_iterator p = v.begin(); p != v.end(); ++p)
    8.         cout << ' ' << *p;
    9.     cout << '\n';
    10. }
    Nếu sử dụng std:: ở mọi nơi, đoạn code trên sẽ như sau
    C++ Code:
    1. #include < iostream >
    2. #include < vector >
    3. void f(const std::vector& v)
    4. {
    5.     std::cout << “Values:;
    6.     for (std::vector::const_iterator p = v.begin(); p != v.end(); ++p)
    7.         std::cout << ‘ ‘ << *p;
    8.     std::cout << ‘\n’;
    9. }
    Theo quan điểm cá nhân thì bạn nên sử dụng std:: ở mọi nơi, vì như vậy còn nhanh hơn là việc phải nghĩ xem với một tên trong namespace nào đó, có cần thiết phải sử dụng using-declaration hay không và nếu có thì sử dụng trong phạm vi nào.
    Tất nhiên, cả hai cách nói trên đều tốt. Điều quan trọng là bạn là thành viên của một nhóm làm việc và bạn phải tuân theo những chuẩn chung do nhóm của bạn đề ra

    Theo tài liệu tại _http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5
    Được gửi bởi bạn kiennguyen.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    Ngày gia nhập
    08 2011
    Bài viết
    4

    Smile Có nên sử dụng “using namespace std” hay không?

    Dr cho e hỏi là ý nghĩa của std:: là sao?
    Bởi vì từ trước giờ chưa bao giờ đụng đến nó nhưng mà giờ lại gặp rất nhiều, mà e chưa có đọc tài liệu nào đề cập đến cái này nên muốn hỏi bác.
    Mong bác Dr chỉ dẫn giùm e và có thể cho e một vài minh hoạ để có thể hiểu được.
    Cám ơn Dr trước.

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    1

    bạn nên đọc qua cuốn lập trình hướng đối tượng nó nói rõ đó

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    59

    cái này thầy dạy cũng có nhắc, nhưng mới học lại ghét gõ nhiều nên lúc nào cũng xài

Các đề tài tương tự

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 2
    Bài viết cuối: 02-09-2017, 06:36 PM
  2. Bị lỗi "a namespace with this name does not exist", sửa như thế nào ?
    Gửi bởi cuogbk14 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 01-11-2012, 02:03 PM
  3. C#: báo lỗi khi import thư viện .dll "The type or namespace name 'DllImport' could not be found"
    Gửi bởi qhhqnavy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 26-05-2011, 10:37 AM
  4. Problems : " recover tree " with input as " preorder" and "inorder"
    Gửi bởi HoangManhHa1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 13-04-2011, 10:19 PM
  5. [ Solved ]Nên sử dụng "Class *a" hay "Class a"
    Gửi bởi Forlorn_hope trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 19-04-2008, 05:05 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn