Dynamic_Cast C++

Dynamic Cast C



Diễn viên động trong ngôn ngữ lập trình C++ sẽ được thảo luận trong bài viết này. Để bắt đầu, chúng ta phải hiểu khái niệm đúc và nhiều loại đúc. Quá trình thay đổi kiểu dữ liệu của một biến được gọi là ép kiểu. Truyền kiểu được chia thành hai loại trong ngôn ngữ lập trình C++: ép kiểu ẩn và ép kiểu tường minh.

Chuyển kiểu dữ liệu trong C++:

Truyền kiểu là thủ tục thay đổi kiểu dữ liệu thành một số kiểu dữ liệu khác. Có hai loại ép kiểu hoặc chuyển đổi kiểu trong ngôn ngữ lập trình C++: ép kiểu ẩn và ép kiểu rõ ràng. Chuyển đổi kiểu tự động là một tên gọi khác của kiểu nhập ẩn. Nó được thực hiện bởi trình biên dịch trong quá trình biên dịch thời gian thực và không cần bất kỳ hành động hay thao tác nào của người dùng. Khi có hai loại kiểu dữ liệu trong một biểu thức, hình thức ép kiểu này sẽ xảy ra. Ví dụ:

  Giao diện người dùng đồ họa, văn bản, ứng dụng Mô tả được tạo tự động







Trong đoạn mã đã cho, chúng ta có thể thấy rằng một biến số nguyên và một biến ký tự được chèn vào biểu thức dòng cuối cùng và giá trị của biến số nguyên “i” bị thay đổi. Số ASCII tương đương với “a” sẽ được chuyển đổi thành giá trị ký tự và được thêm vào giá trị nguyên của biến “i” trong câu lệnh này. Nếu giá trị của biến “i” được in ra, kết quả sẽ là tổng của cả hai giá trị này. Trình biên dịch tự động chuyển đổi kiểu dữ liệu của biến ký tự thành kiểu dữ liệu số nguyên bằng cách chuyển đổi nó thành giá trị tiêu chuẩn ASCII của bảng chữ cái ở bên phải, đây là một ví dụ tuyệt vời về chuyển đổi kiểu ẩn hoặc tự động trong thời gian chạy.



Bây giờ, khi nói đến việc truyền kiểu hoặc chuyển đổi kiểu rõ ràng, đó không phải là một quy trình tự động; người dùng phải tự chuyển đổi kiểu dữ liệu của một biến thành một kiểu biến khác trong mã. Các kiểu dữ liệu thường được sắp xếp theo thứ bậc dựa trên không gian bộ nhớ và lượng thông tin mà chúng có thể chứa. Vì vậy, khi loại dữ liệu bậc thấp hơn được sử dụng để lưu trữ bất kỳ thông tin nào nhưng phải được chuyển đổi thành loại dữ liệu bậc cao hơn để có thể giảm thiểu việc mất thông tin và có thể lưu trữ ngày càng nhiều thông tin, thì việc ép kiểu hoặc chuyển đổi kiểu rõ ràng thường được thực hiện. xong. Ví dụ: vì một biến kiểu số nguyên không thể lưu trữ các giá trị sau dấu thập phân, nên chúng ta có thể mất một số thông tin nếu tiếp tục sử dụng các biến số nguyên. Để tránh sự mất mát này, chúng tôi chuyển đổi biến số nguyên thành biến float, lưu các giá trị sau dấu thập phân và ngăn ngừa mất thông tin. Việc chuyển đổi kiểu rõ ràng trong ngôn ngữ lập trình C++ có thể được thực hiện theo một trong hai cách: thông qua phép gán hoặc bằng cách sử dụng toán tử ép kiểu. Việc chuyển đổi gán được thực hiện trong một biểu thức mã và cú pháp cho biểu thức này được cung cấp bên dưới.



# “(kiểu dữ liệu) biểu thức”

Trong đoạn mã trên, chúng ta phải đặt một kiểu dữ liệu hợp lệ trong dấu ngoặc và sau dấu ngoặc, chúng ta phải viết biến hoặc biểu thức mà chúng ta muốn sửa đổi thành kiểu dữ liệu được viết bên trong dấu ngoặc.





Bây giờ chúng ta sẽ xem xét loại chuyển đổi được thực hiện bởi các toán tử ép kiểu trong ngôn ngữ lập trình C++. Toán tử truyền còn được gọi là toán tử đơn nguyên buộc một biến thay đổi kiểu dữ liệu của nó từ kiểu hiện có này sang kiểu dữ liệu khác. Có bốn loại toán tử truyền kiểu: Truyền tĩnh, truyền động, truyền Const và diễn giải lại.

Truyền động trong C++:

Truyền động trong ngôn ngữ lập trình C++ dựa trên một khái niệm gọi là RTTI (Nhận dạng loại thời gian chạy). RTTI là một hàm có trong một số ngôn ngữ lập trình như C/C++, Ada và Object Pascal. Thông tin hoặc Nhận dạng Loại Thời gian Chạy là một chức năng xác định và trích xuất thông tin liên quan đến các chi tiết của loại dữ liệu của đối tượng trong thời gian chạy của chương trình. Hàm này cung cấp một đường dẫn an toàn cho các phương thức truyền kiểu như hàm “typeid” hoặc kiểu truyền động. Nó phát hiện thông tin loại dữ liệu trong thời gian chạy và hỗ trợ chuyển đổi loại dữ liệu khi các nhà khai thác đang chơi.



Truyền động chủ yếu được sử dụng trong C++ để truyền xuống an toàn trong thời gian chạy. Để làm việc với dynamic cast, base class phải có 1 virtual function. Truyền động động chỉ hoạt động với các lớp cơ sở đa hình vì nó sử dụng thông tin này để xác định việc truyền xuống an toàn. Toán tử truyền động thực hiện truyền động. Bây giờ chúng ta đã biết về các khái niệm liên quan đến truyền động, chúng ta có thể chuyển sang phần triển khai. Trước tiên chúng ta hãy xem cú pháp sử dụng ép kiểu động trong ngôn ngữ lập trình C++, được viết dưới đây:

# “Dynamic_cast (Biểu thức)”

Trong biểu thức trên, phần đầu mô tả tên của toán tử; trong ngoặc nhọn ta viết tên kiểu dữ liệu cần chuyển đổi biểu thức thành, còn trong ngoặc tròn ta viết tên biến hoặc đối tượng muốn chuyển đổi.

Bây giờ chúng ta đã biết cách sử dụng toán tử ép kiểu động và điền các tham số để chuyển đổi kiểu dữ liệu của biến, chúng ta có thể sử dụng nó để chuyển đổi kiểu dữ liệu của biến.

Sử dụng phương pháp truyền động trong Ubuntu 20.04:

Để thực hiện khái niệm này, chúng ta phải sử dụng một số lớp để làm việc với việc chuyển đổi các đối tượng của lớp bằng sự kế thừa. Vì vậy, để làm được điều đó, trước tiên chúng ta phải biết rằng tệp chương trình C++ trong môi trường Ubuntu được lưu trữ với phần mở rộng “.cpp”, vì vậy, để tạo tệp này trên màn hình của chúng tôi, hãy mở một thiết bị đầu cuối và nhập “cd Desktop” trên dòng lệnh, sau đó nhấn enter và nhập “touch filename .cpp” để tạo một tệp có phần mở rộng “.cpp”. Bây giờ chúng ta sẽ viết một đoạn mã trong tệp đó để tạo một lớp cơ sở và 2 lớp dẫn xuất, và trong mã trình điều khiển, chúng ta sẽ sử dụng toán tử ép kiểu động.

  Giao diện người dùng đồ họa, văn bản Mô tả được tạo tự động

Thoát tệp sau khi nhấp vào nút lưu. Quay trở lại thiết bị đầu cuối và tạo tệp bằng cách sử dụng lệnh “g ++” với tên tệp của bạn và phần mở rộng “.cpp”. Một tệp có phần mở rộng “.out” sẽ được tạo bằng lệnh này. Bây giờ bạn có thể chạy tệp đó bằng cách nhập “./” theo sau là phần mở rộng “.out”.
  Văn bản Mô tả được tạo tự động

Trong chương trình này, con trỏ lớp cơ sở lưu trữ các đối tượng lớp dẫn xuất 1 (d1). Lớp cơ sở truyền động, con trỏ giữ lại đối tượng Derived1 và phân bổ nó cho lớp dẫn xuất 1, lớp này cung cấp phép truyền động hợp lệ.

Sự kết luận :

Bài viết này dạy chúng ta phương pháp ép kiểu được sử dụng trong ngôn ngữ lập trình C++. Loại ép kiểu cũng đã được thảo luận chi tiết và chúng tôi tập trung vào nhu cầu giải thích tại sao chúng tôi sử dụng các phương pháp như vậy trong lập trình C++. Chúng tôi đã thảo luận về chức năng hỗ trợ giúp chuyển đổi loại dữ liệu của biến bằng cách tìm nạp thông tin và xác minh chuyển đổi chính xác được gọi là RTTI. Chúng tôi cũng đã triển khai khái niệm Truyền động bằng cách sử dụng toán tử truyền động trong một biểu thức bằng ngôn ngữ lập trình C++ trong môi trường Ubuntu 20.04.