所以我有一个输出流类,它拥有一个指向实际执行写入的类的指针,我需要一个复制构造函数,以便我可以从函数返回初始化的实例,以便我可以透明地将某些值绑定给用户。为了获得合理的复制语义,我真的很想清除复制对象中的写入器指针并关闭它,使其在复制期间无法使用。
我可以使用非常量复制构造函数 a-la 来做到这一点:
class Test {
public:
Test(Test& other);
};
但我希望能够直接从函数调用返回的临时分配:
Test test = make_test();
复制构造函数必须是 const。所以我很好奇在复制构造函数中使用 const_cast 会有什么影响。我将另一个引用转换为非常量指针并清除我提到的编写器指针。我知道 const_cast 通常被认为是邪恶的,但在这种情况下它可以工作吗?我特别好奇它将如何与从函数调用返回的临时对象进行交互。
或者,只有四个创建函数我真的想访问复制构造函数,如果有一种合理的方法来确定它的范围,以便它只能用于这些函数(包括它们的返回值),那么我更喜欢那个。