#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; }
时间: 2024-03-09 16:48:15 浏览: 156
这段代码存在一些问题。首先,类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()
```
相关问题
#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; }
这代码的输出结果是: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> #include<string> using namespace std; class A { public: virtual void vfunc1() { cout<< "A vfunc1"<< endl; } }; class B : public A { public: virtual void vfunc2() { cout<< "B vfunc2"<< endl; } }; class C : public B { public: virtual void vfunc2() { cout<< "C vfunc2" << endl; } }; int main() { A a; B b; C c; cout<< sizeof(a) << endl; cout<< sizeof(b)<< endl; cout<< sizeof(c)<< endl; }会输出什么
这段代码的输出将是:
4
8
8
这是因为类A只有一个成员函数,所以它的大小是4个字节(在大多数平台上,指针的大小为4个字节)。类B和类C都继承了类A,并且在类B中添加了一个新的成员函数,所以类B的大小是8个字节。类C继承了类B,并且在类C中重写了类B中的成员函数,但是由于没有添加新的成员函数,所以类C的大小也是8个字节。
阅读全文