- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Andrei Alexandrescu 的书“现代 C++ 设计”中,为什么 PrototypeFactoryUnit::GetPrototype
必须调用友元函数 DoGetPrototype
?为什么它不能直接将传入的指针设置为原型(prototype)本身? PrototypeFactoryUnit::SetPrototype
和 DoSetPrototype
函数也完成了同样的事情。
最佳答案
一些上下文!
template <class, class Base>
class PrototypeFactoryUnit: public Base {
public:
typedef typename Base::ProductList::Head AbstractProduct;
friend void DoGetPrototype(const PrototypeFactoryUnit& me,
AbstractProduct*& pPrototype)
{
pPrototype = me.pPrototype_;
}
template <class U>
void GetPrototype(U*& p) {
return DoGetPrototype(*this, p);
}
private:
AbstractProduct* pPrototype_;
};
(虽然它确实让我有机会清理这个上面的灰尘......)
因为GetPrototype
是模板,它可以用许多不同的类型实例化。然后,重载决议将发挥作用!
例如,我写了一个 DoGetPrototype(...& me, DerivedProduct*& p)
然后说:
DerivedProduct* p =0;
factory.GetPrototype(p);
然后,调用我的重载。
因此,这是一个定制点:一个静态分派(dispatch),类似于具有默认实现的 virtual
函数的运行时对应物。
关于c++ - 在 "Modern C++ Design"为什么 Prototype Factory Unit::GetPrototype 必须调用 DoGet Prototype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982814/
如果每个对象最终都继承自最高级别的对象,并且最高级别的对象具有 getPrototypeOf() 函数/方法,为什么以下代码会产生错误? obj = {}; proto = obj.getProtot
ES2015 中 __proto__ 的标准化是否否定了对 Object.getPrototypeOf 的需求? 最佳答案 Do __proto__ and Object.getPrototype o
本文整理了Java中org.mozilla.javascript.xml.XMLObject.getPrototype()方法的一些代码示例,展示了XMLObject.getPrototype()的具
在 Andrei Alexandrescu 的书“现代 C++ 设计”中,为什么 PrototypeFactoryUnit::GetPrototype 必须调用友元函数 DoGetPrototype?
我是一名优秀的程序员,十分优秀!