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ề void12345 | 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
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
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 © 2024 CppDeveloper by Phạm Minh Tuấn (SHUN)
Từ khóa » Cách Dùng Hàm Typedef
-
Hai Anh Em Typedef Và Define Trong C++ - CodeLearn
-
Tự Học C/C++ | Typedef Và Bí Danh »
-
Bài 14: Cấu Trúc Dữ Liệu Struct Và Cách Dùng Typedef Trong C
-
[LBC_ 23] Cách Sử Dụng Cấu Trúc Typedef Trong C - Code Lean
-
Từ Khóa Typedef Trong C | 64 Bài Học Lập Trình C Hay Nhất
-
Typedef Và Enum — Modern C++ - STDIO
-
Tìm Hiểu Về Từ Khóa Typedef Trong C - DevPro
-
Từ Khóa Typedef Trong C - Hoclaptrinh
-
Khai Báo địa Chỉ Của Hàm Bằng Cách Sử Dụng Typedef - Dạy Nhau Học
-
Hai Anh Em Typedef Và Define Trong C - Sen Tây Hồ
-
Cấu Trúc Dữ Liệu Struct Và Cách Dùng Typedef Trong C - OLP Tiếng Anh
-
Typedef Trong Lập Trình C - TutorialCup
-
Kiểu Cấu Trúc Trong C++ Là Gì? Cách Khai Báo, Khởi Tạo Và Truy Cập ...
-
Khi Nào Tôi Nên Sử Dụng Typedef Trong C++?