簡體   English   中英

純虛擬 function 調用

[英]pure virtual function calling

第一個printable(e)給出了“實體”,但對於下一行,程序崩潰了。 給出一些字符。 讓我知道錯誤。

#include<iostream>
using namespace std;

class A
{
public:
    virtual string getclassname() = 0;
};

class entity : public A
{
public:
    string getclassname() override
    {
        cout << "entity" << endl;
    }
};

class player : public entity
{
private:
    string m_name2;

public:
    player(const string& name2) // Creating a constructor
        :m_name2(name2) {}

    string getname()
    {
        return m_name2;
    }
public:
    string getclassname() override
    {
        cout << "player" << endl;
    }
};

void printable(A* en)
{
    cout << en->getclassname() << endl;
}

int main()
{
    entity* e = new entity();
    player* p = new player("bird");

    printable(e);
    printable(p);
}

您的getclassname() function 不會返回任何東西,即使它承諾會返回。 這會導致未定義的行為 您不應該打印,而是編寫一個字符串:

string getclassname() override
{
    return "player";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM