wushaodong 发表于 2016-4-8 19:24:42

为什么无法输出

# include <iostream>
# include <string>

class Lovers
{
public:
           std::string name;
                Lovers(std::string thename);

                void kiss(Lovers *lover);
                void ask();
};
Lovers::Lovers(std::string thename)

{
        name = thename;
}

voidLovers::kiss(Lovers *lover)
{
                std::cout<<name<<"亲了一下"<<lover->name;
   
}




class Boyfirend : public Lovers
{
public:

        Boyfirend(std::string thename);

        void kiss(Lovers *love);
       
};

void Boyfirend::kiss(Lovers *lover)
{



}

Boyfirend::Boyfirend(std::string thename) : Lovers(thename)
{
}

class Girlfirend : public Lovers
{

public:

        Girlfirend(std::string thename);

};

Girlfirend::Girlfirend(std::string thename) : Lovers(thename)
{

}


int main(void)
{


        Boyfirend bf("A君");
        Girlfirend gf("B妞");
       

        bf.kiss(&gf);




        return 0;
}

奥古斯丁少爷 发表于 2016-4-8 23:13:03

在小甲鱼的视屏里,BOY类里应该是没有kiss 的函数的。你把BOY里的Kiss函数删了就可以了。
原因在后面的视频你学了就懂了。
基类里定义了Kiss函数,然后Boy类里也有kiss函数,且这两个函数名相同,并且没有把基类里的Kiss函数设为虚函数,那么子类里的kiss函数会把基类的kiss函数隐藏,也就是说后面创建出的boy的对象的kiss执行的是Boy类里的kiss,那么你在BOY类里Kiss函数的定义是空的,所以什么也没有。

caspar 发表于 2016-4-8 23:21:45

boy类的kiss函数讲基类的kiss函数覆盖了

wushaodong 发表于 2016-4-9 05:12:53

caspar 发表于 2016-4-8 23:21
boy类的kiss函数讲基类的kiss函数覆盖了

那该怎么修改

wushaodong 发表于 2016-4-9 05:15:13

奥古斯丁少爷 发表于 2016-4-8 23:13
在小甲鱼的视屏里,BOY类里应该是没有kiss 的函数的。你把BOY里的Kiss函数删了就可以了。
原因在后面的视 ...

谢谢你哈因为我刚学C++。还没有学到虚函数和隐藏这两个概念
页: [1]
查看完整版本: 为什么无法输出