Sử Dụng Typedef Và Using Trong C++ - CppDeveloper
Có thể bạn quan tâm
Cú pháp cơ bản của typedef
Cú pháp của typedef tương đối giống với khai báo biến và hàm, tuy nhiên mục đích của nó là để định nghĩa một tên khác cho một kiểu dữ liệu →
C++ int T; // T có kiểu dữ liệu là int typedef int T; // T là một (alias) tên gọi khác của kiểu int int A[100]; // A là một mảng 100 phần tử int typedef int A[100]; // A là một alias (tên gọi khác) của kiểu "mảng 100 phần tử int"| 1234 | intT;// T có kiểu dữ liệu là inttypedefintT;// T là một (alias) tên gọi khác của kiểu intintA[100];// A là một mảng 100 phần tử inttypedefintA[100];// A là một alias (tên gọi khác) của kiểu "mảng 100 phần tử int" |
Một khi type alias (tên thay thế) của một kiểu dữ liệu đã được định nghĩa thì tên đó có thể được dùng thay thế cho tên của kiểu dữ liệu gốc →
C++ typedef int A[100]; // A là một alias (tên gọi khác) của kiểu "mảng 100 phần tử int" // SampleStruct là một struct chứa một mảng 100 phần tử int struct SampleStruct { A data; };| 123456 | typedefintA[100];// A là một alias (tên gọi khác) của kiểu "mảng 100 phần tử int" // SampleStruct là một struct chứa một mảng 100 phần tử intstructSampleStruct{Adata;}; |
Một số cú pháp nâng cao hơn của typedef
Định nghĩa kiểu dữ liệu con trỏ hàm thông thường → C++ void (*f)(int); // f là "con trỏ tới hàm có 1 tham số kiểu int, trả về void" typedef void (*f)(int); // f là alias của kiểu "con trỏ tới hàm có // 1 tham số kiểu int, trả về void"| 123 | void(*f)(int);// f là "con trỏ tới hàm có 1 tham số kiểu int, trả về void"typedefvoid(*f)(int);// f là alias của kiểu "con trỏ tới hàm có // 1 tham số kiểu int, trả về void" |
| 1234 | void(Foo::*pmf)(int);// pmf là một alias của "con trỏ tới hàm thành viên của Foo // có một tham số int trả về void"typedefvoid(Foo::*pmf)(int);// pmf là một alias của kiểu "con trỏ tới hàm // thành viên của Foo có một tham số int, trả về void |
| 12 | int*x,(*p)();// x kiểu int*, p kiểu int(*)()typedefint*x,(*p)();// x là alias của int*, p là alias của int(*)() |
Khai báo alias sử dụng “using”
Từ C++11 chúng ta có thể sử dụng cú pháp using thay thế typedef → C++ using I = int; // kiểu int using A = int[100]; // kiểu dữ liệu array có 100 phần tử int using FP = void(*)(int); // kiểu dữ liệu "con trỏ tới hàm có 1 tham số kiểu int, trả về void" using MP = void (Foo::*)(int); // kiểu dữ liệu "con trỏ tới hàm thành viên của Foo có một tham số int, // trả về void| 12345 | usingI=int;// kiểu intusingA=int[100];// kiểu dữ liệu array có 100 phần tử intusingFP=void(*)(int);// kiểu dữ liệu "con trỏ tới hàm có 1 tham số kiểu int, trả về void"usingMP=void(Foo::*)(int);// kiểu dữ liệu "con trỏ tới hàm thành viên của Foo có một tham số int, // trả về void |
Tạo một alias kiểu dữ liệu bằng using có tác dụng chính xác giống như với typedef. Nó chỉ đơn giản là một cú pháp thay thế để hoàn thành điều tương tự. Tuy nhiên có một điểm khác biệt đó là using có thể sử dụng với template trong khi typedef thì không. Hãy xem ví dụ sao để rõ hơn →
C++ #include <iostream> using namespace std; template <typename T> class Sample { private: T t; public: void setValue(T t) { this->t = t; } void printf() { cout << t << endl; } }; using Sample_int = Sample<int>; // typedef Sample_int Sample<int>; --> Không dùng được typedef với template int main() { Sample_int sample; sample.setValue(10); sample.printf(); return 0; }| 12345678910111213141516171819202122232425262728 | #include <iostream> usingnamespacestd; template<typenameT>classSample{private:Tt; public:voidsetValue(Tt){this->t=t;} voidprintf(){cout<<t<<endl;}}; usingSample_int=Sample<int>;// typedef Sample_int Sample<int>; --> Không dùng được typedef với template intmain(){Sample_int sample;sample.setValue(10);sample.printf();return0;} |
— Phạm Minh Tuấn (Shun) —
- Cplusplus
- typedef
- using
Trước đóTạo random number bằng thư viện chuẩn của C++
Tiếp theo[CODING SKILL] Code thối – Code smell – Anti pattern
Tìm kiếm cho:Facebook Page
Ads



Forum
Tham gia group Bài viết mới
-
Ý nghĩa của Change-Id trong Gerrit Code Review
Tháng Một 27, 2022 0 -
Android Automotive OS – Android based platform dành cho ô tô
Tháng Một 19, 2022 0 -
Dùng song song 2 mạng Ethernet và Wifi trên Windows
Tháng Chín 27, 2021 0 -
Một số cách convert number sang string trong C++
Tháng Năm 7, 2021 0 -
Toán tử ‘typeid’ trong C++
Tháng Ba 8, 2021 0 -
Bộ tiền xử lý – Preprocessor trong C/C++
Tháng Mười Hai 28, 2020 0 -
Cùng tìm hiểu về Base64 encoding
Tháng Mười Một 4, 2020 0
Chuyên mục
- 4 TÍNH CHẤT CỦA OOP
- BEST PRACTICES
- C++ NÂNG CAO
- CODE GYM
- CTDL & GIẢI THUẬT
- DESIGN PATTERNS
- KIẾN THỨC TỔNG HỢP
- LINUX / YOCTO / AOSP
- TECH365
- VISUAL STUDIO
Copyright © 2025 CppDeveloper by Phạm Minh Tuấn (SHUN)
Từ khóa » Câu Lệnh Typedef
-
Tự Học C/C++ | Typedef Và Bí Danh »
-
Hai Anh Em Typedef Và Define Trong C++ - CodeLearn
-
Từ Khóa Typedef Trong C - Hoclaptrinh
-
Tìm Hiểu Về Từ Khóa Typedef Trong C - DevPro
-
Từ Khóa Typedef Trong C | 64 Bài Học Lập Trình C Hay Nhất
-
Bài 14: Cấu Trúc Dữ Liệu Struct Và Cách Dùng Typedef Trong C
-
Kiểu Cấu Trúc Trong C++ Là Gì? Cách Khai Báo, Khởi Tạo Và Truy Cập ...
-
Hiểu Cho đúng Về Từ Khóa Typedef Trong Ngôn Ngữ C
-
Câu Lệnh Typedef Này Có Nghĩa Là Gì? - HelpEx - Trao đổi & Giúp đỡ
-
Câu Lệnh Typedef Trong Cấu Trúc Struct Có Tác Dụng Gì?
-
Typedef Struct Là Gì - Hai Anh Em Typedef Và Define Trong C++
-
Typedef Trong Lập Trình C - TutorialCup
-
C ++ - Nghĩa Của Một Câu Lệnh Kết Hợp Typedef Và Typename
-
Khai Báo Define Trong C/C++ | Sự Khác Nhau Giữa Define Và Typedef