#include <iostream> using namespace std; class A { public: A(int n ) { cout << n; } }; class B: public A { public: B(int n, double d) : A(n) { cout << d; } }; class C: public B { public: C(int n, double d, char ch) : B(n, d) { cout <<ch; } }; int main() { C c(5, 4.3, 'R'); return 0; }
时间: 2024-02-10 12:11:13 浏览: 77
这代码的输出结果是:5 4.3 R。
解释:
首先,main函数中创建了一个C对象c,构造函数的参数分别为5、4.3和'R'。
然后,C类的构造函数先调用B类的构造函数,B类的构造函数又调用A类的构造函数,因此输出5。
接着,B类的构造函数输出4.3。
最后,C类的构造函数输出'R'。
因此,最终输出的结果为:5 4.3 R。
相关问题
#include <iostream> using namespace std; class A { public: int a; A(int n) : a(n) { } }; class B { public: int b; A obj; // 在此处补充你的代码 }; int main() { B a1(10); B a2 = a1; B a3 = a2; cout << a1.b << "," << a1.obj.a
在此处补充代码,补充后的代码如下:
```c++
#include <iostream>
using namespace std;
class A {
public:
int a;
A(int n) : a(n) { }
};
class B {
public:
int b;
A obj;
B(int n) : b(n), obj(n) { }
B(const B& other) : b(other.b), obj(other.obj.a) { }
};
int main() {
B a1(10);
B a2 = a1;
B a3 = a2;
cout << a1.b << "," << a1.obj.a << endl; // 输出 10,10
cout << a2.b << "," << a2.obj.a << endl; // 输出 10,10
cout << a3.b << "," << a3.obj.a << endl; // 输出 10,10
return 0;
}
```
解析:
代码中定义了两个类 A 和 B,其中 A 类只有一个 int 类型的成员变量 a,构造函数用于初始化 a;B 类有两个成员变量,一个是 int 类型的成员变量 b,另一个是 A 类型的对象 obj,构造函数用于初始化 b 和 obj。B 类还定义了一个拷贝构造函数,用于实现深拷贝。
在 main 函数中,定义了三个 B 类型的对象 a1、a2 和 a3,其中 a1 通过构造函数初始化,a2 和 a3 通过拷贝构造函数初始化。最后输出这三个对象的成员变量 b 和 obj.a 的值,都是 10。
#include <iostream> using namespace std; class A{ public: { cout<<"A::f()\n"; } }; class B:public A{ public: void f() {cout<<"B::f()\n"; } }; int main() { B b; A &p ; f(); return 0; }
这段代码存在一些问题。首先,类A中的函数f没有函数名,应该加上函数名。其次,在B类中重写了函数f,但是在main函数中调用的是A类中的函数f,应该改为调用B类中的函数f。此外,A类中的构造函数应该加上函数名和参数列表。修改后的代码如下:
```
#include <iostream>
using namespace std;
class A{
public:
A(){
cout<<"A::A()\n";
}
void f(){
cout<<"A::f()\n";
}
};
class B:public A{
public:
void f(){
cout<<"B::f()\n";
}
};
int main(){
B b;
A &p = b;
p.f();
return 0;
}
```
输出结果为:
```
A::A()
B::f()
```
阅读全文