作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类有一个成员,该成员是另一个类的实例,该类以 vector 作为成员;像这里:
class C1
{
private:
std::vector<int> m_intVec;
// ...
};
和
class C2 : public I1 // this is an interface
{
private:
C1 m_c1;
// ...
public:
void getC1(C1& c1Out) const
{
c1Out = m_c1
}
};
界面是这样的:
class I1
{
public:
virtual ~I1() {}
virtual void getC1(C1& c1Out) const = 0;
};
我使用多态调用 C2 类:
int main(int argc, char** argv)
{
// ...
I1* i1 = new C2;
// ...
while (1)
{
// set the member c1 // this is not happening all the time
// ...
C1 c1Obj;
i1->getC1(c1Obj);
// ...
}
// ...
}
我的问题是:c1Obj
能否在上一次迭代中具有值? (换句话说:如果未重置,i1
的成员是否可以与上一次迭代具有相同的值?)如果是,有人可以向我解释为什么吗?有什么解决办法吗?
如果答案是否定的,为什么在某些情况下我得到相同的结果:我在图像中模糊了一个区域,在某些情况下模糊的区域与之前相同,我不知道这是不是一个错误, 或者不是。
最佳答案
NO,这是不可能的。 c1Obj
保证每次在循环中创建,并在循环作用域结束时销毁。你做错了:
I1 i1 = new C2;
应该是
I1* i1 = new C2;
和
i1.getC1(c1Obj);
应该是
i1->getC1(c1Obj);
注意:i1
(实际上是 c2
)将包含相同的 m_c1
对象,因此 i1->getC1(c1Obj);
语句, c1Obj
将始终相同。
关于C++:多态成员可以保持不变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782464/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!