【发布时间】:2015-04-02 00:37:02
【问题描述】:
假设我有一个包含 3 个方法和一个属性的类。该类应该将值编码在一个名为 result 的数组中。因此运行 3 个函数以获得存储在 result 中的最后一个编码结果。
class A{
public:
int size;
int* result;
A(int si){
size=si;
result=new int[size];
for(int i=0;i<size;i++)
result[i]=5;
}
void func_1(){
for(int i=0;i<size;i++)
result[i]=i+1;
}
void func_2(){
for(int j=0;j<size;j++)
result[j]=j+10;
}
void func_3(){
for(int k=0;k<size;k++)
result[k]=k+4;
}
};
int main(){
A a(10);
a.func_1(); // consider each method as an encoding function (e.g. encryption, randomization, etc)
a.func_2();
a.func_3();
return 0;
}
在这里,我将中间结果存储在名为 result 的数据成员数组中。
我的问题是,将中间结果存储在类的属性中并不断更新它是不是一个坏主意? (即违反类定义)
如果这不是一个好主意,还有什么替代方案?
【问题讨论】:
-
在不知道如何使用此类的情况下很难评估此类设计的正确性。您能否提供更多上下文,也许是一些显示 A 对象的示例用法的代码?
-
您的代码不会按原样编译。您的函数中的 for 循环不正确。
-
另外,请不要将所有内容放在一条线上。留白很便宜。
-
@DavidLively 代码已修改,希望对您有所帮助。
-
此外,数据并不是真正可访问的(或者是否有意将成员公开?),因此从未使用过。即使它是可访问的,也可以很容易地按需计算。总之,您的代码没有解决任何问题,因此可以将其删除。也许您还想稍微澄清一下您的问题,因为就目前而言,您还不清楚您想要什么,更不用说什么可以替代了。