面向对象程序设计-C++_课时24多态的实现

Posted 邓戈麟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象程序设计-C++_课时24多态的实现相关的知识,希望对你有一定的参考价值。

 

所有带virtual的类的对象,里面最上面有一个隐藏的指针vptr,指向一张表vtable

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class A
 5 {
 6 public:
 7     A() :i(10) {}
 8     virtual void f() { std::cout << "A::f()" << std::endl; }
 9     int i;
10 };
11 
12 void main()
13 {
14     A a, b;
15     a.f();
16 
17     std::cout << sizeof(a) << std::endl;//8,不是4
18 
19     int *p = (int *)&a;
20     int *q = (int *)&b;
21 
22     int *x = (int *)*p;
23 
24     std::cout << *x << std::endl;
25 
26     std::cout << *p << " " << *q << std::endl;//一样
27 
28     system("pause");
29 }

 

1234

以上是关于面向对象程序设计-C++_课时24多态的实现的主要内容,如果未能解决你的问题,请参考以下文章

面向对象程序设计-C++_课时19const_课时20不可修改的

面向对象程序设计-C++_课时26拷贝构造Ⅰ_课时27拷贝构造Ⅱ

面向对象程序设计-C++_14对象组合_课时15继承

面向对象程序设计-C++_课时13初始化列表

面向对象程序设计-C++_课时21引用

面向对象程序设计-C++_课时18内联函数