刚发现:虚函数可以突破子类中的private限制

刚发现:虚函数可以突破子类中的private限制

先上代码:

class Base { public://这里的公共的  virtual void myprint()=0;//{ //   cout<<“I’m Basen”; //  };

};

class Son:public Base{ private://这里是私有的  virtual void myprint(){   cout<<“I’m Sonn”;  }; };

void main()

{

 Base *pBase = new Son;  pBase->myprint();//打印“I’m Son”,成功访问到了子类中的私有函数

}

纯虚函数和java语言中的接口的定义很相近,最近我也学习以及复习这方面的知识,

刚写base类时,我没有写public关键字,结果可想而知是通不过的,默认base类里所有变量和成员函数都是private 的,

而后我把base类改成了struct base,这样编译通过了,而且main函数里成功打印了“I’m Son”,

但是我并没有改Son类啊。。。。

于是,我发现,原来基类里公共的虚函数在多态时要根据基类访问权限来调用的。

Son原意是不想让别人访问myprint函数的,但现在通过一个基类的指针就可以访问到myprint函数,我认为这多少破坏了类的封装性啊。

 Base *pBase;// = new Son;  Son mySon;  pBase = &mySon;  pBase->myprint();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

tensorflow: Shapes and Shaping 探究

1001
来自专栏Stone的专栏

一篇文章精通 VLOOKUP 函数

相信不少人看到标题,立即嗤之以鼻,VLOOKUP 谁不会?是的,大家都会,但用的好的人不多。相信我,这篇文章一定可以算得上通俗易懂,又有深度的一篇文章,熟练掌握...

1890
来自专栏美团技术团队

Java8系列之重新认识HashMap

摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8...

4445
来自专栏java技术学习之道

Collections.synchronizedMap()、ConcurrentHashMap、Hashtable之间的区别

1764
来自专栏邵靖的专栏

Python 字符串子串定位性能比较

本文想探讨的是在给定了key字段在字段列表中开始下标和key字段个数后,如何在整行字符串中定位到key字符串的起始位置。

8191
来自专栏Ryan Miao

Java8-理解Collector

2994
来自专栏Fish

CUDA PTX ISA阅读笔记(一)

不知道这是个啥的看这里:Parallel Thread Execution ISA Version 5.0. 简要来说,PTX就是.cu代码编译出来的一种东西...

3405
来自专栏Danny的专栏

设计模式奠基石——UML关系转化为代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1983
来自专栏java一日一条

Java HashMap 核心源码解读

本篇对HashMap实现的源码进行简单的分析。 所使用的HashMap源码的版本信息如下:

581
来自专栏互联网开发者交流社区

HashMap相关(二)

1175

扫码关注云+社区

领取腾讯云代金券