#include<iostream> class A { public: int a1, a2 ; A( int i1=0, int i2=0 ) { a1 = i1; a2 = i2; } void print() { cout << "a1=" << a1 << '\t' << "a2=" << a2 << endl ; } }; class B : public A { public: int b1, b2 ; B( int j1=1, int j2=1 ) { b1 = j1; b2 = j2; } void print() { cout << "b1=" << b1 << '\t' << "b2=" << b2 << endl ; } void printAB() { A::print() ; print() ; } }; void main() { B b ; b.A::print(); b.printAB(); }运行结果
时间: 2024-01-10 21:04:30 浏览: 39
这段代码的运行结果会输出以下内容:
```
a1=0 a2=0
a1=0 a2=0
b1=1 b2=1
```
这是因为程序中定义了两个类 `A` 和 `B`,类 `B` 继承自类 `A`,并添加了两个成员变量和一个成员函数 `printAB()`。
在 `main()` 函数中,先定义了一个 `B` 类型的对象 `b`,此时会调用 `B` 类的默认构造函数,在构造函数中,会自动调用其父类 `A` 的默认构造函数,将 `a1` 和 `a2` 初始化为 `0`。然后程序依次执行了以下语句:
- `b.A::print()`:调用了 `A` 类的 `print()` 函数,输出了 `a1=0 a2=0`。
- `b.printAB()`:调用了 `B` 类的 `printAB()` 函数,其中调用了 `A` 类的 `print()` 函数,输出了 `a1=0 a2=0`,然后调用了 `B` 类的 `print()` 函数,输出了 `b1=1 b2=1`。
因此,最终程序输出了上述的三行内容。需要注意的是,在 `printAB()` 函数中,调用了 `A::print()` 函数和 `print()` 函数,分别输出了父类和子类的成员变量。
相关问题
#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。
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<cmath> using namespace std; int z; class A { int x; public: A() { x = 0; z = 1; } void seta() { z++; } void show() { cout << x << z << endl; } }; int main() { A a1, a2; a1.seta(); a1.show(); a2.seta(); a2.show(); }
这段代码定义了一个类 A,其中包含一个私有变量 x 和一个公有静态变量 z。构造函数初始化 x 为 0,z 初始化为 1。类 A 中有两个公有成员函数,seta() 和 show(),seta() 函数使 z 自增 1,show() 函数输出 x 和 z 的值。
在 main() 函数中创建了两个 A 类型的对象 a1 和 a2,先后调用 seta() 和 show() 函数进行操作和输出。由于 z 是静态变量,因此对它的修改会影响所有 A 类型的对象。输出结果为:
0 2
0 3