C++(11):static_pointer_cast/dynamic_pointer_cast
C++11引入了static_pointer_cast用于在编译期做向下转型(从基类向派生类转型),但是不做类型安全检查。同时引入了dynamic_pointer_cast,用于在运行期做类型安全检查的向下转型。#include iostream #include memory struct FileBase { virtual ~FileBase() = default; virtual const char* kind() const { return "FileBase"; } }; struct TextFile : FileBase { const char* kind() const override { return "TextFile"; } void write_line() const { std::cout "TextFile::write_line() called" '\n'; } }; struct BinaryFile : FileBase { const char* kind() const override { return "BinaryFile"; } void dump_bytes() const { std::cout "BinaryFile::dump_bytes() called" '\n'; } }; void print_owner_count(const char* name, const std::shared_ptrFileBase ptr) { std:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2576132.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!