代码改变世界

重载为什么一定要指针才行呢?请专家解答下

  钟铧若岩  阅读(26)  评论(0编辑  收藏  举报

请教专家,为什么下面的代码都是输出 A类的方法,而采用指针才能达到重载的目的。

复制代码
 1 #include <endian.h>
 2 #include <iostream>
 3 using namespace std;
 4 
 5 class A
 6 {
 7     public: virtual void print(void)
 8     {
 9         cout << "A:print" <<endl;
10     }
11 };
12 class B :public A
13 {
14     public:  void  print (void) override
15     {
16         cout << "B:print" <<endl;
17     }
18 };
19 
20 void print (A a)
21 {
22     a.print();
23 }
24 void print (A *a)
25 {
26     a->print();
27 }
28 int main()
29 {
30 
31     A a;B b;
32     a.print(); //A:print
33     b.print(); //B:print
34 
35     print(a);  //A:print
36     print(b);  //A:print   为什么这里还是打印的A:print???
37 
38     print(&a);  //A:print
39     print(&b);  //B:print  重载了,所以打印子类的
40     
41     A *c = new B();
42     c->print(); //B:print
43     delete c;
44 
45 
46 }
复制代码

 

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示