如果您想了解一些背景故事,请参阅这个问题。
我想将事物作为不可变数据传递。
template<class T>
class A
{
public:
void send(const T& value);
};
A<int> a;
a.send(1);
到现在为止还挺好。我只是发送了一个常量值,但是当我使用指针时,事情变得很棘手。
A<int *> a;
int b = 1;
a.send(&b);
我最终得到的是:
void send(int *const & value)
我现在传递一个无法更改的指针作为参考,但该指针指向的内容可以更改。这是正确的,但我想说你不能修改这个指针指向的内容。
我的意图是使事物不可变,但这甚至可能吗?