Generic pointer là gì?
- ★
- ★
- ★
- ★
- ★
Con trỏ chung (generic pointer) còn được gọi là con trỏ void (void pointer), con trỏ chung (generic pointer) là một loại con trỏ (pointer) đặc biệt có thể được trỏ đến các đối tượng thuộc bất kỳ kiểu dữ liệu (data type) nào. Con trỏ chung (generic pointer) được khai báo giống như một con trỏ bình thường, sử dụng từ khóa void làm kiểu dữ liệu của con trỏ.
void* ptr; // ptr is a void pointer
Một con trỏ chung (generic pointer) có thể trỏ đến các đối tượng thuộc bất kỳ kiểu dữ liệu nào:
int nValue;
float fValue;
struct Something
{
int n;
float f;
};
Something sValue;
void* ptr;
ptr = &nValue; // valid
ptr = &fValue; // valid
ptr = &sValue; // valid
Tuy nhiên, vì con trỏ chung (generic pointer) không biết kiểu dữ liệu của đối tượng mà nó đang trỏ tới, nên việc dereferencing đến con trỏ void là không hợp lệ. Thay vào đó, con trỏ chung (generic pointer) trước tiên phải được ép kiểu (typecast) sang một loại con trỏ khác trước khi có thể thực hiện dereferencing.
int value{ 5 };
void* voidPtr{ &value };
// std::cout (voidPtr) }; // however, if we cast our void pointer to an int pointer...
std::cout
Output:
5
Learning English Everyday