我没想到这个代码编译:唯一指针和const正确性
#include <iostream>
#include <memory>
class A
{
public:
inline int get() const
{
return m_i;
}
inline void set(const int & i)
{
m_i = i;
}
private:
int m_i;
};
int main()
{
const auto ptr = std::make_unique<A>();
ptr->set(666); // I do not like this line D:<
std::cout << ptr->get() << std::endl;
return 0;
}
如果PTR是一个原始的C指针,我将是确定这一点。但因为我使用的是智能指针,所以我无法理解这背后的原因。
我使用独特的指针来表示所有权,在面向对象编程中,这可以看作是一个对象组合(“部分”关系)。
例如:
class Car
{
/** Engine built through some creational OO Pattern,
therefore it has to be a pointer-accessed heap allocated object **/
std::unique_ptr<Engine> m_engine;
};
或者:
class A
{
class Impl;
std::unique_ptr<A::Impl> m_impl; // PIMPL idiom
};
如果一个类Car的实例是不断,为什么不引擎应该是恒定的呢?如果这是一个共享指针,我会完全正确的。
有没有可以反映我想要的行为的智能指针?
'ptr-> set(666); //我不喜欢这一行D:<':每日报价;)。 – 3442