VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C++ Cơ Bản

Ngôn ngữ lập trình C++ là gì? Lịch sử của C++ Các tính năng của C++ Cài đặt môi trường lập trình C++ Chương trình C++ đầu tiên Biến trong C++ Các kiểu dữ liệu trong C++ Ép kiểu trong C++ Từ khóa trong C++ Các toán tử trong C++ Comment trong C++ Các hằng số trong C++ count, cin và endl trong C++ Ký tự đặc biệt trong C++ Namespace trong C++ Template trong C++ Modifier trong C/C++

Câu Lệnh Điều Khiển C++

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

C++ Function

Hàm trong C++ Hàm do người dùng định nghĩa Các kiểu hàm trong C++ Đệ quy trong C++ Call by value Call by reference

C++ Array

Mảng (array) trong C++ Mảng 2 chiều trong C++ Truyền mảng vào hàm

C++ Poiter

Con trỏ trong C++ Con trỏ Null trong C++ Con trỏ số học trong C++ Con trỏ và mảng trong C++ Mảng con trỏ trong C++ Con trỏ tới con trỏ trong C++ Truyền con trỏ tới hàm trong C++ Trả về con trỏ từ hàm trong C++

C++ Lớp Object

Khái niệm lập trình hướng đối tượng trong C++ Lớp và đối tượng trong C++ Constructor trong C++ Destructor trong C++ this trong C++ static trong C++ struct trong C++ Enumeration trong C++ Hàm Friend trong C++ Hàm Math trong C++ Tính kế thừa trong C++ Tính đa hình trong C++ Tính trừu tượng trong C++ Tính đóng gói trong C++ Interface trong C++

Nạp Chồng Toán Tử

Nạp chồng toán tử và Nạp chồng hàm trong C++ Nạp chồng toán tử một ngôi trong C++ Nạp chồng toán tử nhị phân trong C++ Nạp chồng toán tử quan hệ trong C++ Nạp chồng toán tử Input/Output trong C++ Nạp chồng toán tử ++ và -- trong C++ Nạp chồng toán tử gán trong C++ Nạp chồng toán tử gọi hàm () trong C++ Nạp chồng toán tử subscript [] trong C++ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Lập Trình C++

Xử lý ngoại lệ trong C++ Đa luồng trong C++
Bài Tập C++ Có Lời Giải
1 / 3
❮ ❯

Namespace trong C++


Ký tự đặc biệt trong C++
Template trong C++

Hãy xem xét một tình huống, khi chúng ta có hai người cùng tên 'Bishop' trong cùng một lớp. Vì vậy để phân biệt chúng sẽ phải sử dụng một số thông tin bổ sung cùng với tên của họ. Chẳng hạn như nơi ở nếu họ sống ở 2 nơi khác nhau hoặc tên của cha mẹ họ, v.v.

Tình huống tương tự có thể xảy ra trong các ứng dụng C++. Ví dụ, bạn có thể viết một hàm có tên là xyz() và có một thư viện khác có hàm cùng tên xyz(). Bây giờ trình biên dịch không có cách nào để biết phiên bản nào của hàm xyz() mà bạn đang đề cập đến bên trong chương trình của bạn.

Một namespace được thiết kế để khắc phục vấn đề này và được sử dụng làm thông tin bổ sung để phân biệt các hàm, lớp, biến vv với cùng tên có sẵn trong các thư viện khác nhau. Sử dụng namespace trong C++, bạn có thể xác định ngữ cảnh trong đó tên được chỉ định. Về bản chất, một namespace định nghĩa một phạm vi.


Nội dung chính

  • Định nghĩa namespace
  • Chỉ thị using
  • Namespace không liên quan
  • Namespace lồng nhau

Định nghĩa namespace

Một định nghĩa namespace trong C++ bắt đầu với từ khóa namespace theo sau là tên namespace như sau:

namespace namespace_name {
    // code
}
Để gọi phiên bản được kích hoạt namespace của một trong hai hàm hoặc biến, hãy thêm 2 dấu 2 chấm (::) như sau:

name::code;  // code có thể là biến hoặc hàm.

Ví dụ namespace trong C++:

#include <iostream>
using namespace std;

// first namespace
namespace first_space {
   void func() {
      cout << "This is first_space" << endl;
   }
}

// second namespace
namespace second_space {
   void func() {
      cout << "This is second_space" << endl;
   }
}

int main () {
   // goi ham tu first_space.
   first_space::func();
   
   // goi ham tu second_space.
   second_space::func(); 

   return 0;
}

Kết quả:

This is first_space
This is second_space


Chỉ thị using

Bạn cũng có thể tránh việc sử dụng tên của namespace với dấu (::) bằng cách sử dụng chỉ thị using. Chỉ thị này cho trình biên dịch biết mã tiếp theo sẽ sử dụng các tên trong namespace đã chỉ định. Ví dụ:

#include <iostream>
using namespace std;

// first namespace
namespace first_space {
   void func() {
      cout << "This is first_space" << endl;
   }
}

// second namespace
namespace second_space {
   void func() {
      cout << "This is second_space" << endl;
   }
}

using namespace first_space;
int main () {
    func();
    return 0;
}

Kết quả:

This is first_space

Hoặc:

#include <iostream>
using namespace std;

// first namespace
namespace first_space {
   void func() {
      cout << "This is first_space" << endl;
   }
}

// second namespace
namespace second_space {
   void func() {
      cout << "This is second_space" << endl;
   }
}

using namespace second_space;
int main () {
    func();
    return 0;
}

Kết quả:

This is second_space

Chỉ thị 'using' cũng có thể được sử dụng để chỉ một mục cụ thể trong một namespace. Ví dụ, nếu phần duy nhất của không gian tên std mà bạn dự định sử dụng là cout, nó được khai báo như sau:

using std::cout;

Mã tiếp theo có thể tham chiếu đến cout mà không cần thêm namespace, nhưng các mục khác trong namespace std sẽ vẫn cần phải khai báo rõ ràng như sau:

#include <iostream>
using std::cout;

int main () {
    cout << "std::endl duoc su dung voi std!" << std::endl;
   
    return 0;
}

Kết quả:

std::endl duoc su dung voi std!

Namespace không liên quan

Một Namespace có thể được định nghĩa trong một số phần và do đó một Namespace được tạo thành từ tổng các phần được định nghĩa của nó. Các phần riêng biệt của Namespace có thể được trải rộng trên nhiều tệp.

Vì vậy, nếu một phần của Namespace yêu cầu tên được xác định trong một tệp khác, tên đó vẫn phải được khai báo. Viết một định nghĩa vùng tên sau đây hoặc định nghĩa một không gian tên mới hoặc thêm các phần tử mới vào một không gian tên hiện có:

namespace namespace_name {
    // code
}


Namespace lồng nhau

Cú pháp:

namespace namespace_name1 {
   // code
   namespace namespace_name2 {
      // code
   }
}

Bạn có thể truy cập các thành viên của namespace lồng nhau bằng cách sử dụng các toán tử phân giải như sau:

// để truy cập thành viên của namespace_name2
using namespace namespace_name1::namespace_name2;

// để truy cập thành viên của namespace:name1
using namespace namespace_name1;

Ví dụ:

#include <iostream>
using namespace std;

// first namespace
namespace first_space {
    void func() {
        cout << "This is first_space" << endl;
    }
   
    // second namespace
    namespace second_space {
        void func() {
            cout << "This is second_space" << endl;
        }
    }
}

using namespace first_space::second_space;
int main () {
 // se goi ham cua namespace second_space
    func();
    return 0;
}

Kết quả:

This is second_space

Ký tự đặc biệt trong C++
Template trong C++

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Đa luồng trong C++Xử lý ngoại lệ trong C++Nạp chồng toán tử truy cập thành viên lớp (->) trong C++Nạp chồng toán tử subscript [] trong C++Nạp chồng toán tử gọi hàm () trong C++Nạp chồng toán tử gán trong C++Nạp chồng toán tử ++ và -- trong C++Nạp chồng toán tử Input/Output trong C++Nạp chồng toán tử quan hệ trong C++Nạp chồng toán tử nhị phân trong C++Nạp chồng toán tử một ngôi trong C++Nạp chồng toán tử và Nạp chồng hàm trong C++

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml