我想在C ++中围绕简单类型制作一些基本的包装类。既然你不能像你应该那样继承基类型,我只是使用包装类。问题是,我希望能够直接转换为该类型,因为该转换将完全有效。编译器只是不让你和我找不到一种方法告诉它没有运行一个杀死性能的强制转换方法就行了。有没有办法做到这一点?
以下是我对转换构造函数的作用:
class Integer32
{
public:
Integer32(int value) { this->Value = value; }
int Value;
};
编译器是否知道跳过它并直接从int中分配它?我如何测试这一点以确保它是相当重要的......
答案 0 :(得分:3)
提供非explicit
构造函数,以允许从基类型转换和转换为包装器。
提供非explicit
转换运算符,以允许从包装器转换为基类。
class my_wrapper {
my_wrapper(int); // casting from int
operator int(); // casting to int
};
(让他们explicit
允许显式转换但不允许隐式转换)