精华内容
下载资源
问答
  • 024:Fun和Do

    2020-10-22 21:59:44
    024:Fun和Do 题面 描述 程序填空输出指定结果 #include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; void ...

    024:Fun和Do

    题面

    描述

    程序填空输出指定结果

    #include <iostream> 
    using namespace std;
    class A { 
    	private: 
    	int nVal; 
    	public: 
    	void Fun() 
    	{ cout << "A::Fun" << endl; }; 
    	void Do() 
    	{ cout << "A::Do" << endl; } 
    }; 
    class B:public A { 
    	public: 
    	virtual void Do() 
    	{ cout << "B::Do" << endl;} 
    }; 
    class C:public B { 
    	public: 
    	void Do( ) 
    	{ cout <<"C::Do"<<endl; } 
    	void Fun() 
    	{ cout << "C::Fun" << endl; } 
    }; 
    void Call(
    // 在此处补充你的代码
    ) { 
    	p.Fun(); p.Do(); 
    } 
    int main() { 
    	C c; 
    	Call( c); 
    	return 0;
    }
    

    输入

    输出

    A::Fun
    C::Do

    思路

    我们容易发现的是class B中的void Do是虚函数,我们再看main函数中调用的实参是class C,所以第二句话一定是因为虚函数的原因,那么我们再去考虑第一句话输出的是A::Fun,那么显然Call的定义是B& p

    展开全文
  • Fun和Do(继承和多态

    2020-03-11 11:50:39
    Fun和Do(继承和多态 描述 程序填空输出指定结果 #include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; void...

    Fun和Do(继承和多态

    描述

    程序填空输出指定结果

    #include <iostream> 
    using namespace std;
    class A { 
    	private: 
    	int nVal; 
    	public: 
    	void Fun() 
    	{ cout << "A::Fun" << endl; }; 
    	void Do() 
    	{ cout << "A::Do" << endl; } 
    }; 
    class B:public A { 
    	public: 
    	virtual void Do() 
    	{ cout << "B::Do" << endl;} 
    }; 
    class C:public B { 
    	public: 
    	void Do( ) 
    	{ cout <<"C::Do"<<endl; } 
    	void Fun() 
    	{ cout << "C::Fun" << endl; } 
    }; 
    void Call(
    // 在此处补充你的代码
    ) { 
    	p.Fun(); p.Do(); 
    } 
    int main() { 
    	C c; 
    	Call( c); 
    	return 0;
    }
    

    输入

    输出

    A::Fun
    C::Do

    几番尝试之后,发现
    B & p 就可以了

    C类的对象可以赋给B类别名,调用p.Fun()时, B类没有, 所以直接使用继承自A的Fun(),
    调用p.Do()时,B类中的Do()是虚函数, 是多态调用,发现该别名p实际上代表的是一个C类对象,于是调用C类的Do()

    展开全文
  • C++ Fun和Do题解

    千次阅读 2018-12-19 23:50:43
    024:Fun和Do 查看 提交 统计 提问 总时间限制:  1000ms   内存限制:  65536kB // 在此处补充你的代码 描述 程序填空输出指定结果 #include &lt;iostream&gt; using namespace std; class ...

    024:Fun和Do

    总时间限制: 

    1000ms

     

    内存限制: 

    65536kB

    // 在此处补充你的代码

    描述

    程序填空输出指定结果

    #include <iostream> 
    using namespace std;
    class A { 
    	private: 
    	int nVal; 
    	public: 
    	void Fun() 
    	{ cout << "A::Fun" << endl; }; 
    	void Do() 
    	{ cout << "A::Do" << endl; } 
    }; 
    class B:public A { 
    	public: 
    	virtual void Do() 
    	{ cout << "B::Do" << endl;} 
    }; 
    class C:public B { 
    	public: 
    	void Do( ) 
    	{ cout <<"C::Do"<<endl; } 
    	void Fun() 
    	{ cout << "C::Fun" << endl; } 
    }; 
    void Call(
    ) { 
    	p.Fun(); p.Do(); 
    } 
    int main() { 
    	C c; 
    	Call( c); 
    	return 0;
    }

    输入

    输出

    A::Fun 
    C::Do

    样例输入

    None

    样例输出

    A::Fun 
    C::Do 
    

    来源

    Guo Wei

     

    函数的参数传入的是B &p,

    Fun函数没有多态,执行的是A,Do函数多态,执行的是C::Do

    #include <iostream> 
    using namespace std;
    class A {
    private:
    	int nVal;
    public:
    	void Fun()
    	{
    		cout << "A::Fun" << endl;
    	};
    	void Do()
    	{
    		cout << "A::Do" << endl;
    	}
    };
    class B :public A {
    public:
    	virtual void Do()
    	{
    		cout << "B::Do" << endl;
    	}
    };
    class C :public B {
    public:
    	void Do()
    	{
    		cout << "C::Do" << endl;
    	}
    	void Fun()
    	{
    		cout << "C::Fun" << endl;
    	}
    };
    void Call(B &p
    	// 在此处补充你的代码
    ) {
    	p.Fun(); p.Do();
    }
    int main() {
    	C c;
    	Call(c);
    	system("pause");
    	return 0;
    }

     

    展开全文
  • 026:怎么又是Fun和Do

    2020-10-22 22:03:51
    026:怎么又是Fun和Do 题面 描述 程序填空输出指定结果 #include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; ...

    026:怎么又是Fun和Do

    题面

    描述

    程序填空输出指定结果

    #include <iostream>
    using namespace std;
    class A {
    	private:
    	int nVal;
    	public:
    	void Fun()
    	{ cout << "A::Fun" << endl; };
    	virtual void Do()
    	{ cout << "A::Do" << endl; }
    };
    class B:public A {
    	public:
    	virtual void Do()
    	{ cout << "B::Do" << endl;}
    };
    class C:public B {
    	public:
    	void Do( )
    	{ cout <<"C::Do"<<endl; }
    	void Fun()
    	{ cout << "C::Fun" << endl; }
    };
    void Call(
    // 在此处补充你的代码
    ) {
    	p->Fun(); p->Do();
    }
    int main() {
    	Call( new A());
    	Call( new C());
    	return 0;
    }
    

    输入

    输出

    A::Fun
    A::Do
    A::Fun
    C::Do

    思路

    考虑new A生成A类的指针时输出的和new C生成C类的指针时输出,我们发现当以C类指针调用Call函数时他的输出是不一样的那么一定是多态的。

    答案:A* p

    展开全文
  • 025:怎么又是Fun和Do

    2021-04-13 08:44:03
    题目: ... 分析: 还是用基类指针指向派生类对象的问题,根据输出,可以看到,...分析与023:Fun和Do 类似,但要注意的是,基类指针能指向派生类对象,但派生类对象指针是不可以指向基类对象的! 参考代码: #includ
  • 023:Fun和Do

    2021-04-11 10:16:45
    p.Fun() 输出A::Fun, 从代码可以看到,Fun并不是多态函数,那要访问A的Fun函数有两种方法,一是直接从类A访问,二是从派生类B访问基类的public成员函数。 p.Do() 输出C::Do,看到类A中的Do并不是多态,而B中的Do是...
  • c++编程练习 024:Fun和Do

    2021-01-07 02:23:58
    void Fun() { cout << A::Fun << endl; }; void Do() { cout << A::Do << endl; } }; class B:public A { public: virtual void Do() { cout << B::Do << endl;} }; ...
  • void Fun() { cout << A::Fun << endl; }; virtual void Do() { cout << A::Do << endl; } }; class B:public A { public: virtual void Do() { cout << B::Do << endl;...
  • 程序设计与算法(三)第06周测验002:Fun和Do 本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第六周测验。本课程学习的github仓库欢迎Fork 总时间限制: 1000ms 内存限制: 65536kB 描述 程序...
  • 程序设计与算法(三)第06周测验004:怎么又是Fun和Do 本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第六周测验。本课程学习的github仓库欢迎Fork 总时间限制: 1000ms 内存限制: 65536kB ...
  • 北大程序设计与算法(三) 实现自vs2019 描述 023:看上去像多态 #include <iostream> using namespace std; class B { private: ... void Fun() {cout << "B::Fun" << en
  • } 002:Fun和Do 描述 程序填空输出指定结果 #include using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" ; }; void Do() { cout << "A::Do" ; } }; class B:public ...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 251
精华内容 100
关键字:

fun和do