在c ++中调用类实例的正确方法是什么?

时间:2018-03-01 17:40:41

标签: c++ class

我是c ++的初学者,我对如何调用类实例有疑问...... 我用c ++编写了一个课程,但我不知道我是否用这种方法来调用它。 我在main中使用了一个指针,但这是一个很好的方法吗?我认为必须使用指针很奇怪,但我没有设法做同样的事情。

谢谢!

#include <iostream>
#include <vector>

class list_int{
    public:
        void run();
        list_int(): liste(){};
    private:
        void print_menu();
        void add_entier();
        void print_list();
        void suppr_last();
        void print_last();
        std::vector<int> liste;
};

void list_int::print_menu()
{
    std::cout<<"Menu :"<<std::endl;
    std::cout<<"1. Ajouter un entier"<<std::endl;
    std::cout<<"2. Afficher la liste des entiers"<<std::endl;
    std::cout<<"3. Supprimer dernier entier de la liste."<<std::endl;
    std::cout<<"4. Afficher la dernière note tapée"<<std::endl;
    std::cout<<"5. Quitter"<<std::endl;
}

void list_int::add_entier()
{
    if(liste.size()>9)
    {
        std::cout<<"Liste remplie"<<std::endl;
        return;
    }
    int entier;
    std::cout<<"Entre l'entier a ajouter:";
    std::cin>>entier;
    liste.push_back(entier);
}

void list_int::print_list()
{
    std::cout<<"La liste :"<<std::endl;
    for(auto it=liste.begin();it!=liste.end();it++)
    {
        std::cout<<*it<<std::endl;
    }
}

void list_int::suppr_last()
{
    liste.pop_back();
    std::cout<<"Dernier element supprimé"<<std::endl;
}

void list_int::print_last()
{
    if(!liste.size())
    {
        std::cout<<"last element:"<<liste[liste.size()-1]<<std::endl;
    }else{
        std::cout<<"Liste vide"<<std::endl;
    }
}

void list_int::run()
{
    int choix;
    bool continuer = true;
    while(continuer)
    {
        print_menu();
        std::cin>>choix;
        switch(choix){
            case 1:
                add_entier();
                break;
            case 2:
                print_list();
                break;
            case 3:
                suppr_last();
                break;
            case 4:
                print_last();
                break;
            default:
                continuer = false;
        }
    }
}

int main()
{
    list_int* liste = new list_int();
    liste->run();
}

1 个答案:

答案 0 :(得分:2)

不,这里没有必要使用指针;您只需创建一个list_int对象并直接在其上调用run()

int main()
{
    list_int liste;
    liste.run();

    return 0; // (don't forget to return)
}

此外,在使用指针时,在使用指针后应始终确保delete指针。因此,在您的特定示例中,如果您选择保留指针,则必须在结束时调用delete liste