c++基本类型包装器

C++ basic type wrappers

本文关键字:包装 类型 c++      更新时间:2023-10-16

我想在c++中围绕简单类型创建一些基本的包装类。由于您不能像应该的那样从基类型继承,所以我只使用包装器类。问题是,我希望能够直接转换为该类型,因为该转换将是完全有效的。编译器就是不让你,我找不到一种方法来告诉它,它是可以的,而不运行强制转换方法,这会降低性能。有什么办法可以做到吗?

下面是转换构造函数:

class Integer32
{ 
    public: 
    Integer32(int value) { this->Value = value; } 
    int Value; 
};

编译器知道跳过它,直接从int赋值吗?我如何测试它来确保,因为它是相当重要的…

提供一个非explicit构造函数来允许从基类型到包装器的转换和强制转换。提供一个非explicit转换操作符,允许从包装器到基类的转换强制转换。

class my_wrapper {
    my_wrapper(int); // casting from int
    operator int();  // casting to int
};

(将它们设置为explicit以允许显式强制转换,但不允许隐式转换)