c++ - 类里面的 setter和getter

标签 c++

考虑到我有大量的对象(包含一些数据,如 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/

相关文章:

c++ - 类成员函数号的作用

c++ - 将 C++ 代码与汽车游戏连接起来

c++ - openCV 2.4.9 与 CUDA 6.5 的编译错误

c++ - 检查类型是否为 Eigen3 类型

c++ - C++中的if语句

c++ - 如何在链表中使用查找

c++ - 如何使用具有默认值的 int& 参数?

c++ - 抽象类/接口(interface) C++

c++ - 基类作为属性

c++ - 如何使用 rapidjason 解析根目录中的数组