Polymorphism 抽象基类中的非虚方法

Polymorphism 抽象基类中的非虚方法,polymorphism,Polymorphism,我试图写一个简单的国际象棋游戏,这主要是一个多态性练习。我应该创建一个抽象类chessmen并从中继承棋子。现在,我决定对于每一块,都应该有一些非虚拟的方法,比如getColor和getRank,它们基本上做相同的事情,所以我认为在基本chessmen类中有这样的方法来完成这项工作会更方便。但我不确定是否有正确的方法。我写了一些简单的测试代码,看看它是否工作,编译时没有问题,但输出肯定不正确 我在问,有没有办法做到这一点 编辑:My test.cpp代码 class Dad { publ

我试图写一个简单的国际象棋游戏,这主要是一个多态性练习。我应该创建一个抽象类chessmen并从中继承棋子。现在,我决定对于每一块,都应该有一些非虚拟的方法,比如getColor和getRank,它们基本上做相同的事情,所以我认为在基本chessmen类中有这样的方法来完成这项工作会更方便。但我不确定是否有正确的方法。我写了一些简单的测试代码,看看它是否工作,编译时没有问题,但输出肯定不正确

我在问,有没有办法做到这一点

编辑:My test.cpp代码

class Dad
{
    public:
            virtual void Void() =0;
            bool  biT;
            bool getBit(){return biT;}
};

class Kid: public Dad
{
    public:
        void Void(){}
};

int main()
{
    Dad* dP = new Kid;
    cout<<dP->getBit();
}

输出类似于197,而不是bool。

欢迎使用C++:引用未初始化的值会导致未定义的行为。位在被引用之前未初始化。一种可能的方法是告诉对象在创建时希望它是什么颜色。此外,您最终会希望删除使用new创建的对象,但这样做也会调用未定义的行为,因为您尚未在基类中定义虚拟析构函数

class Dad
{
    public:
            Dad(bool b) : biT(b) {}
            virtual ~Dad() {}
            virtual void Void() =0;
            bool  biT;
            bool getBit(){return biT;}
};

class Kid: public Dad
{
    public:
        Kid(bool b) : Dad(b) {}
        void Void(){}
};

int main()
{
    Dad* dP = new Kid(false);
    cout<<dP->getBit();
    delete dP;
}

发布代码,错误是什么,以及为什么你认为应该有所不同。我的魔法球今天坏了,所以你应该与我们分享有问题的源代码。你的问题不清楚。请发布导致问题的代码。我想我要做的是解决问题,而不是我的代码。我仍然认为是这样。我希望我已经足够清楚地解释了我想做什么。@LuchianGrigore我做到了。这意味着即使是bool类型也可以作为非bool返回?这怎么可能?我希望得到1或0。非常感谢。是的-未定义的行为意味着程序可以做任何事情,就标准而言。它可以点燃你的电脑,那真是太棒了。