0

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

这是我对转换构造函数的内容:

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

编译器是否知道跳过它并直接从 int 分配它?我如何测试它以确保它相当重要......

4

1 回答 1

3

提供非explicit构造函数以允许从基类型转换和强制转换为包装器。提供非explicit转换运算符以允许从包装器转换为基类。

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

(使它们explicit允许显式转换但不允许隐式转换)

于 2013-01-04T03:04:10.397 回答