山上山上 2022-05-22 23:18 采纳率: 0%
浏览 7

关于#派生类#的问题,如何解决?


#include <iostream>
#include <string>
using namespace std;

class Person
{
private:
    string name;
    char sex;
    int age;
public:
    Person(string name1 = "NoName", char sex1 = 'M', int age1 = 0)
    {
        name = name1;
        sex = sex1;
        age = age1;
        cout << "Person()..." << endl;
    }

    ~Person()
    {
        cout << "~Person()..." << endl;
    }
    void print()
    {
        cout << name << "," << sex << "," << age << endl;
    }
};

class Student :public Person
{
private:
    string name;
    char sex;
    int age;
    string school;
    int score;
public:
    Student(string name1, char sex1, int age1, string school1
        , int score1):Person(name1, sex1, age1)
    {
        school = school1;
        score = score1;
        cout << "Student()..." << endl;
    }
    ~Student()
    {
        cout << "~Student()..." << endl;
    }
    void print()
    {
      cout << name << "," << sex << "," << age << endl;
        //Person::print();
        cout << school << "," << score << endl;
    }
};

int main()
{
    Person p1;
    Student wjz("WangJingzhuo", 'M', 19, "HUE", 90);
    p1.print();
    wjz.print();
    return 0;
}

cout << name << "," << sex << "," << age << endl;
这里为什么不报错,可是打印出的是乱码呢。
改成Person::print()就对了。
能详细解释下问题出在哪里吗

  • 写回答

1条回答 默认 最新

  • 心随而动 人工智能领域新星创作者 2022-05-23 09:14
    关注

    这个是二义性问题,你定义了两个print函数,会出现二义性,除了你说的改法,还有一种方法,就是在对象前作用域运算符进行指向,你可以去我主页,基类和派生类博客中我解释了这种情况,也做出了解决方法

    评论

报告相同问题?

问题事件

  • 创建了问题 5月22日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?