using namespace std; class A{ private: int x,y; public: void ask1(int a=0,int b=0); int ask2(); int ask3(); }; void A::ask1(int a,int b){x=a;y=b;} int A::ask2() { if(x>y) return x; else return y; } int A::ask3(){cout<<"x="<<x<<",y="<<y<<e int main() { A a; a.ask1(); a.ask3(); cout<<a.ask2()<<endl;; a.ask1(3,5); a.ask3(); cout<<a.ask2()<<endl; }的结果
时间: 2023-11-28 09:48:35 浏览: 50
程序的运行结果为:
```
x=0,y=0
0
x=3,y=5
5
```
解释如下:
首先定义了一个类 A,有两个私有成员变量 x 和 y,以及三个公有成员函数 ask1、ask2 和 ask3。
ask1 函数用于给 x 和 y 赋值,可以传入两个参数,也可以不传入参数,默认值为 0。
ask2 函数用于比较 x 和 y 的大小,返回较大的值。
ask3 函数用于输出 x 和 y 的值。
在主函数中,首先创建了一个类 A 的对象 a。然后调用了 a 的 ask1 函数,不传入参数,因此 x 和 y 的值都被赋为默认值 0。接着调用了 a 的 ask3 函数,输出 x 和 y 的值。由于 x 和 y 都是默认值,因此输出结果为 "x=0,y=0"。
接下来调用了 a 的 ask2 函数,由于 x 和 y 都是默认值,因此返回值为 0,输出结果为 "0"。
接着再次调用了 a 的 ask1 函数,传入了参数 3 和 5,因此 x 和 y 的值被赋为 3 和 5。然后再次调用了 a 的 ask3 函数,输出 x 和 y 的值。由于 x 和 y 的值已经被修改为 3 和 5,因此输出结果为 "x=3,y=5"。
最后再次调用了 a 的 ask2 函数,由于此时 x 大于 y,因此返回值为 x,即 5,输出结果为 "5"。
相关问题
#include<iostream> using namespace std; class C { public: C(int a) { x = a; } private: int x; }; class D :public C { public: D(int a):y(a){} private: int y; }; 指出错误,并说明原因
在类D的构造函数中,没有显式调用基类C的构造函数,因为类D是从类C派生而来的。因为类C没有默认构造函数,所以必须显式调用基类C的构造函数并传递参数。所以错误的行为是在类D的构造函数中未显式调用基类C的构造函数。
正确的代码应该是这样的:
```cpp
#include <iostream>
using namespace std;
class C {
public:
C(int a) { x = a; }
private:
int x;
};
class D : public C {
public:
D(int a, int b) : C(a) { y = b; }
private:
int y;
};
int main() {
D d(1, 2);
return 0;
}
```
在类D的构造函数中,我们显式调用了基类C的构造函数并传递了参数a,这样,类D就可以正确地初始化基类C的成员变量x。
#include<iostream> using namespace std; class C { public: C(int a) { x = a; } private: int x; }; class D :public C { public: D(int a) :y(a) {} private: int y; };错误详解
这段代码定义了两个类C和D,其中类D继承自类C。但是在类D的构造函数中,没有调用类C的构造函数进行初始化,这是不合法的。当类C没有默认构造函数时,子类D必须在构造函数中显式地调用类C的构造函数进行初始化。因此,需要在类D的构造函数初始化列表中调用类C的构造函数,如下所示:
```
class C {
public:
C(int a) { x = a; }
private:
int x;
};
class D : public C {
public:
D(int a) : C(a), y(a) {}
private:
int y;
};
```
这样就可以实现子类D对父类C的正确继承和初始化了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)