- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C++ 的新手,正在弄清楚如何为我正在处理的特定项目使用多态性。
我有一个组件列表。每个组件都有一个与之关联的分数,该分数是使用逻辑计算的。所以我有一个抽象类:
class Component {
public:
int compute_score(request *r) =0;
int get_score() { return score; }
protected:
int score;
};
现在每个Component都继承这个抽象基类来实现自己的计算组件分数的逻辑。最终的算法是将所有的 Component 分数组合起来。
// Compute and combine scores
for (int ndx = 0; ndx < num_components; ndx++) {
total += components[ndx]->compute_score();
}
combined_score = total/num_components;
现在我正尝试将此模型融入现有代码库。有一个名为请求的大结构,我想向其中添加这些组件对象并计算分数。
struct request {
...
Component *components[num_components];
...
};
void serve(request *r) {
...
// Compute and combine scores
for (int ndx = 0; ndx < num_components; ndx++) {
total += components->compute_score();
}
combined_score = total/num_components;
...
}
// Listener
void start(request *r) {
// Listen for request
// Serve the request
serve(&r);
// Clear the request struct for reuse
memset(r, 0, sizeof(request));
}
int main() {
// Created only once and then reused
request *req = (request*) calloc(1, sizeof(calloc));
start(&req);
}
使用组件数组的可能性:
在调用 serve() 时动态创建组件子类对象,并释放每次请求进入时动态分配的内存。这种方法最终会为每个请求创建对象,并且可能会影响性能(分配& free) 并可能导致内存碎片。
在请求对象中静态创建组件子类对象,并将它们的引用指向组件数组。我不确定这是否是个好主意,但通过重用相同的对象解决了问题。而且我不确定如何以简单而优雅的方式实现这一目标?任何建议都会有所帮助。
谢谢
最佳答案
先做最简单的方案。
选项 1 可能会影响性能。这是一个很大的可能。如果我是你,我会使用这种方法,因为它更简单。
如果您遇到性能问题,并且如果您可以证明是分配和释放导致了问题,那么您才应该考虑优化解决方案。
您最不想要的就是不必要的复杂代码。
关于C++重用对象以使用抽象基类实现多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375867/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!