|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 6YKT6ZKm5LqI 于 2023-5-16 19:49 编辑
今天的c++实验要我们分析一段代码的输出,我调试了很久但是还是不明白代码的第46、47、48行,也就是pb[2].data、pb[1].data与pb[0].data的值,我的理解是pb[2].data、pb[1].data与pb[0].data应该输出派生类的data值,也就是12,11,10,但是运行结果一个也对不上,麻烦大家帮我看看
- #include <iostream>
- using namespace std;
- class Base
- {
- public:
- Base() : data(count)
- {
- cout << "Base-ctor" << endl;
- ++count;
- }
- ~Base()
- {
- cout << "Base-dtor" << endl;
- --count;
- }
- static int count;
- int data;
- };
- int Base::count;
- class Derived : public Base
- {
- public:
- Derived() : data(count), data1(data)
- {
- cout << "Derived-ctor" << endl;
- ++count;
- }
- ~Derived()
- {
- cout << "Derived-dtor" << endl;
- --count;
- }
- static int count;
- int data1;
- int data;
- };
- int Derived::count = 10;
- int main()
- {
- cout << sizeof(Base) << endl;
- cout << sizeof(Derived) << endl;
- Base *pb = new Derived[3];
- cout << pb[2].data << endl;
- cout << pb[1].data << endl;
- cout << pb[0].data << endl;
- cout << ((static_cast<Derived *>(pb)) + 2)->data1 << endl;
- delete[] pb;
- cout << Base::count << endl;
- cout << Derived::count << endl;
- return 0;
- }
复制代码
运行结果
|
|