class A { public: int a = 100; void func() {cout << "A 成员函数"} }; class B { public: int b = 200; void func() { cout << "B 成员函数" } }; A *a1; B b1; a1 = &b1; a1->func(); b1.func();
时间: 2024-01-13 14:03:31 浏览: 59
cpp代码-C++:静态函数、静态成员 static
这段代码中存在一些语法错误,应该修改为以下代码:
```
#include <iostream>
using namespace std;
class A {
public:
int a = 100;
void func() { cout << "A 成员函数" << endl; }
};
class B {
public:
int b = 200;
void func() { cout << "B 成员函数" << endl; }
};
int main() {
A* a1;
B b1;
a1 = &b1;
a1->func();
b1.func();
return 0;
}
```
此时的输出结果应该为:
```
A 成员函数
B 成员函数
```
因为 `a1` 是一个指向 `A` 类型的指针,但是却指向了 `B` 类型的对象 `b1`。当调用 `a1->func()` 时,由于 `a1` 的静态类型是 `A*`,因此编译器会将 `a1->func()` 解释为调用 `A` 类型的 `func()` 函数,但是实际上 `a1` 指向的是 `B` 类型的对象 `b1`,因此会调用 `B` 类型的 `func()` 函数,输出字符串 `"B 成员函数"`。而当调用 `b1.func()` 时,直接调用 `B` 类型的 `func()` 函数,输出字符串 `"B 成员函数"`。
阅读全文