Tóm Tắt
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 →
Bạn đang đọc: Sử dụng typedef và using trong C++ | CppDeveloper
1234 |
intT;/ / T có kiểu tài liệu là int typedefintT;/ / T là một ( alias ) tên gọi khác của kiểu int intA[100];/ / A là một mảng 100 thành phần int typedefintA[100];/ / A là một alias ( tên gọi khác ) của kiểu ” mảng 100 thành phần int “ |
Một khi type alias ( tên thay thế sửa chữa ) của một kiểu tài liệu đã được định nghĩa thì tên đó hoàn toàn có thể được dùng thay thế sửa chữa cho tên của kiểu tài liệu gốc →
123456 |
typedefintA[100];/ / A là một alias ( tên gọi khác ) của kiểu ” mảng 100 thành phần int “ / / SampleStruct là một struct chứa một mảng 100 thành phần int structSampleStruct{ Adata; }; |
typedef không tạo ra kiểu dữ liệu mới, nó chỉ tạo ra cách khác để refer đến kiểu dữ liệu đã có.
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 →
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 |
typedef →
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 →
12345 |
usingI=int;/ / kiểu int usingA
=int[100];/ / kiểu tài liệu array có 100 thành phần int usingFP=void(*)(int);/ / kiểu tài liệu ” con trỏ tới hàm có 1 tham số kiểu int, trả về void “ usingMP=void(Foo::*)(int);/ / kiểu tài liệu ” con trỏ tới hàm thành viên của Foo có một tham số int , / / trả về void |
Hãy nhớ rằngkhông tạo ra kiểu tài liệu mới, nó chỉ tạo ra cách khác để refer đến kiểu tài liệu đã có. Định nghĩa kiểu tài liệu con trỏ hàm thường thì → Định nghĩa kiểu tài liệu con trỏ hàm trỏ đến phương pháp non-static của class → Định nghĩa cùng lúc nhiều kiểu tài liệu bằngTừ C + + 11 tất cả chúng ta hoàn toàn có thể sử dụng cú phápthay thế
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 →
12345678910111213141516171819202122232425262728 |
#include usingnamespacestd; template classSample{ private: Tt; public: voidsetValue(Tt){ this->t=t; } voidprintf(){ cout< } }; usingSample_int=Sample
// typedef Sample_int Sample intmain(){ Sample_intsample; sample.setValue(10); sample.printf(); return0; } |
Chạy chương trình sẽ in ra hiệu quả là 10 .— Phạm Minh Tuấn ( Shun ) —
Source: https://final-blade.com
Category: Kiến thức Internet