qq_45813272
2021-01-19 18:19
采纳率: 40%
浏览 3

本人是个C++的小白 有道程序改错题请大佬解惑

#include<iostream>
class D1
{
int a;
protected:
int b;
public:
D1(int x=5,int y){a=x;b=y;}
void display()
{cout<<a<<endl<<b<<endl;}
};
class D2
{
int c;
public:
D2(int z=0){c=z;}
void display()
{cout<<c;}
};
class B:public D1,public D2
{
int d;
public:
B(int x){d=x;}
void show()
{D1::display();
cout<<c;
cout<<d<<endl;}
};
void main()
{B t2(30);
t2.show();
t2.display();
}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • great-sakya 2021-01-19 18:54
    已采纳
    #include<iostream>
    using namespace std;//常见的少了一句 
    class D1
    {
    	int a;
    	protected:
    	int b;
    	public:
    	D1(int x=5,int y=0){a=x;b=y;}//前面的含默认的参数,后面的必有默认参数(就是一般把有默认参数的放后边) 
    	void display()
    	{cout<<a<<endl<<b<<endl;}
    	};
    class D2
    {
    	protected://下面子类 B有用到 c,所以c不能是private 
    	int c;
    	public:
    	D2(int z=0){c=z;}
    	void display()
    	{cout<<c;}
    };
    class B:public D1,public D2
    {
    int d;
    public:
    B(int x){d=x;}
    void show()
    {D1::display();
    cout<<c;
    cout<<d<<endl;}
    };
    int main()//main函数要int,下面return 0 
    {B t2(30);
    t2.show();
    t2.D2::display();//D1和D2类都含有函数display,调用时会混淆 
    return 0;
    }
    打赏 评论
  • 蒟蒻一枚 2021-01-19 19:12

    cin/cout/endl等要用命名空间std,应该在第二行的位置写上using namespace std,或者用scanf和printf,再或者在cin,cout和endl前面都加上std::。

    打赏 评论

相关推荐 更多相似问题