Typeid trong C++ là gì?

Typeid Trong C La Gi



C++ là một ngôn ngữ lập trình mạnh mẽ cung cấp nhiều ứng dụng cho người dùng. Một khía cạnh quan trọng của ngôn ngữ lập trình C++ là khả năng hỗ trợ nhận dạng kiểu thời gian chạy. Các đánh máy là một trong những nhận dạng kiểu thời gian chạy được sử dụng rộng rãi trong các chương trình C++.

Nếu bạn không biết những gì đánh máy bằng C++, hãy làm theo hướng dẫn của bài viết này.







Toán tử typeid trong C++

Các đánh máy là một toán tử có sẵn trong ngôn ngữ lập trình C++ cho phép người dùng xác định kiểu dữ liệu của một biến trong thời gian chạy. Giá trị được trả về bởi đánh máy thuộc loại “loại thông tin “, cung cấp nhiều chi tiết khác nhau về loại đối tượng. Điều quan trọng là trong những trường hợp chương trình cần thực hiện nhiều thao tác dựa trên kiểu dữ liệu đang được sử dụng.



Cú pháp của kiểu chữ



Cú pháp của đánh máy toán tử trong C++ như sau:





đánh máy ( kiểu )

Hoặc:



đánh máy ( kinh nghiệm )

Các đánh máy toán tử trong C++ chấp nhận bất kỳ một trong hai tham số này.

Kiểu : Khi chúng ta cần biết kiểu thời gian chạy của một biến hoặc đối tượng, chúng ta cung cấp đối số kiểu bên trong đánh máy nhà điều hành. Chỉ cần đối số loại trong trường hợp này và thông tin loại thời gian chạy sẽ được thu thập mà không cần đánh giá thêm hoặc tính toán trước.

Sự biểu lộ : Khi chúng ta cần thông tin chi tiết về kiểu thời gian chạy của một biểu thức, tham số biểu thức được đưa ra trong đánh máy nhà điều hành. Thông tin về loại thời gian chạy được lấy sau khi biểu thức trong tham số này đã được đánh giá.

Khi được sử dụng với một đánh máy , nó cung cấp thông tin về loại tương ứng với mã định danh. Khi được sử dụng với một biểu thức, nó cung cấp thông tin về kiểu động của đối tượng.

Công dụng của toán tử typeid

Các đánh máy toán tử có thể được sử dụng theo những cách này.

1: Khi toán hạng đóng vai trò là biến của đối tượng

Các đánh máy Toán tử có thể được sử dụng trên toán hạng khi chúng hoạt động như một biến của đối tượng.

#include
#include
sử dụng không gian tên std;

int chính ( ) {
int tôi;
ký tự;
phao fl;
gấp đôi db;

const type_info & loại_i = loại ( Tôi ) ;
const type_info & loại_ch = loại ( ch ) ;
const type_info & type_fl = typeid ( TRONG ) ;
const type_info & loại_db = loại ( db ) ;

cout << 'Loại int i là:' << type_i.name ( ) ;
cout << ' \N Loại ký tự ch là: ' << type_ch.name ( ) ;
cout << ' \N Loại float fl là: ' << type_fl.name ( ) ;
cout << ' \N Loại db kép là: ' << type_db.name ( ) << ' \N ' ;

trở lại 0 ;
}

Trong đoạn mã trên, chúng tôi đang khai báo bốn biến khác nhau, mỗi biến có kiểu dữ liệu riêng biệt. Sau đó chúng tôi đang sử dụng đánh máy toán tử trên các biến này và in các kiểu dữ liệu của chúng bằng câu lệnh cout.

đầu ra

2: Khi toán hạng là một biểu thức

Các đánh máy Toán tử cũng có thể được sử dụng khi toán hạng được coi là một biểu thức.

#include
#include
sử dụng không gian tên std;

int chính ( ) {
int tôi = 7 ;
ký tự = 'Một' ;
nổi fl = 42,4 ;
gấp đôi db = 4.279 ;

const type_info & loại_a = loại ( tôi + ch ) ;
const type_info & loại_b = loại ( Tôi * TRONG ) ;
const type_info & loại_c = loại ( db * TRONG ) ;
const type_info & loại_d = loại ( tôi+db ) ;

cout << 'biểu thức i+ch : ' << type_a.name ( ) ;
cout << ' \N biểu thức i*fl : ' << type_b.name ( ) ;
cout << ' \N biểu thức db*fl : ' << type_c.name ( ) ;
cout << ' \N biểu thức i+db : ' << Gõ tên ( ) ;
trở lại 0 ;
}

Trong đoạn mã trên, chúng ta khởi tạo bốn biến có kiểu dữ liệu khác nhau. Sau đó, chúng tôi đánh giá một số biểu thức và tính toán loại của chúng bằng C++ đánh máy () nhà điều hành.

đầu ra

Ưu nhược điểm của typeid trong C++

Các đánh máy hữu ích khi viết mã hoạt động với các đối tượng không được biết đến cho đến khi chạy. Ví dụ, giả sử rằng một hàm lấy một con trỏ void làm tham số. Nó có thể sử dụng đánh máy để xác định xem con trỏ là int hay double, điều này có thể ảnh hưởng đáng kể đến cách hoạt động của hàm.

Ngoài tên loại, “ gõthông tin ” đối tượng cũng cung cấp nhiều chi tiết khác về loại. Bao gồm các:

  • Cho dù loại là loại cơ bản, loại con trỏ hay loại do người dùng xác định.
  • Cho dù loại là 'const' hay 'dễ bay hơi'.
  • Liệu loại đó có phải là một loại lớp hay không và nếu có thì nó có đa hình hay không.
  • Loại có phải là kiểu mảng hay không và nếu có thì kích thước là bao nhiêu.
  • Cho dù loại là một loại tham chiếu.

Các đánh máy cũng hữu ích khi xử lý các mẫu và hàm có số lượng đối số thay đổi. Bằng cách sử dụng “ đánh máy ”, bạn có thể thực hiện các hành động theo loại cụ thể trong thời gian chạy, chẳng hạn như chọn mẫu hoặc chức năng phù hợp để sử dụng.

Một nhược điểm có thể có của đánh máy là nó hơi chậm. Nó thường chậm hơn các kiểu kiểm tra kiểu khác, chẳng hạn như tham số mẫu hoặc kiểm tra kiểu thời gian biên dịch vì nó kiểm tra kiểu của một đối tượng trong thời gian chạy.

Phần kết luận

Các ' đánh máy ” toán tử trong C++ cung cấp thông tin có giá trị về kiểu dữ liệu của một biến hoặc một đối tượng. Nó cho phép các lập trình viên thực hiện các hành động theo kiểu cụ thể trong thời gian chạy và có thể được sử dụng khi toán hạng hoạt động như một biến hoặc khi toán hạng là một biểu thức.