考虑到我有大量的对象(包含一些数据,如 id、名称等),我正在尝试编写一个程序 我有一个类似这样的显示菜单:
1)
display_menu()
{
vector< CD > CDArray;
//some statements to display
switch(choice)
{
//case1 , case 2, ...
case x;
for(int i=0; i < CDArray.size(); i++)
CDArray[i].printCD(); //printCD() is a method of class CD
//default
}
}
但是如果 vector/数组很大导致速度变慢,这将导致大量函数调用开销。
2) 我应该将函数 printCD() 声明为内联还是
3) 声明另一个对象来调用该函数并通过引用传递 vector/数组,如:
display_menu()
{
vector< CD > CDArray;
CD obj;
//some statements to display
switch(choice)
{
//case1 , case 2, ...
case x;
obj.printCD(CDArray); //CDArray is passed by reference
//default
}
}
第三种方式有问题吗
您建议采用哪种方法?
最佳答案
您对问题的分析过度了。首先让它可读,然后再考虑性能。 100 次中有 99 次您认为是性能瓶颈的最大来源是错误的。
编辑:
要真正回答这个问题,我会考虑面向对象的设计。您的 CD 对象是否需要知道如何将自身打印到屏幕上?它是否需要了解有关 ostream 的一般信息?我认为答案是否定的。在 C++ 中做这种事情的最好方法是有一个重载 <<
的辅助函数。运算符,以便它与 ostreams 一起工作,而无需强制知道您的对象正在与哪个流一起使用,或者具有返回对象的字符串表示形式的方法,这样您甚至不需要担心字符串的去向。
关于c++ - 类里面的 setter和getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5957509/