`
yanghuidang
  • 浏览: 950407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C++私有继承访问

 
阅读更多

环境:VS2010

问题:探讨C++私有继承在外部的访问

代码:


A *pp = &b2;报错: // error C2243: “类型转换”: 从“B *”到“A *”的转换存在,但无法访问

即基类的指针指向派生类可以转换,但是因为是保护型继承,所以不能访问。

这里把A *pp = &b2;改为A *pp = (A*)&b2; 即把指向派生类的指针强制转换成基类指针,就可以访问。

效果如下:

在B类加入以下代码:


这样还可以对基类的a进行修改。

如图:

虽然可以访问,但把指向派生类的指针强制转换成基类指针这种方式不推荐使用,因为已经违背了保护型继承的原则。

注:C++的强制转换是很强大的,它不做类型上的检查

分享到:
评论

相关推荐

    C++公有继承、保护继承和私有继承的区别

    C++提供了三种不同的继承方式,每种方式对基类成员的访问权限有不同的规定,分别是公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance)。 1. 公有继承(public ...

    C++类继承内存布局详解图(一目了然)

    C++类继承内存布局是一种复杂的机制,涉及到类的继承、成员变量的访问、成员函数的访问、虚函数调用、强制转换到基类或虚基类等多个方面。在本文中,我们将从C结构的布局开始,逐步介绍单继承、多重继承、虚继承的...

    c++继承与派生

    本节课程主要介绍C++中继承与派生的概念和使用方法,包括公有继承、私有继承和保护继承等不同的继承方式。通过实验和实践,掌握继承与派生的基本概念和使用方法。 继承的概念 继承是面向对象编程中的一种机制,它...

    c++程序设计 继承与派生实验(二)

    继承方式主要有三种:公有继承(public inheritance)、私有继承(private inheritance)和保护继承(protected inheritance)。在公有继承下,基类的公有和保护成员在派生类中保持相同访问级别;私有继承则使基类的...

    C++类继承,访问权限,有源码参考

    - 友元函数或友元类可以访问类的私有和保护成员,打破封装限制,提供特殊访问权限。 8. **继承的用途**: - 提高代码复用性:通过继承,可以避免重复编写相似的代码。 - 类的层次结构:构建复杂系统时,可以使用...

    C++面向对象程序设计习题继承与派生.pdf

    在C++中,继承方式有三种:公有继承、私有继承和保护继承。 公有继承是指基类中的公有成员和保护成员在派生类中仍然是公有成员和保护成员。基类中的私有成员在派生类中不可访问。公有继承的优点是可以继承基类的...

    详解C++编程中的私有继承和公有继承

    C++类的私有继承 在声明一个派生类时将基类的继承方式指定为private的,称为私有继承,用私有继承方式建立的派生类称为私有派生类(private derived class ), 其基类称为私有基类(private base class )。 私有基类的...

    C++继承与派生课件

    - **私有继承(private)**:基类的所有成员在派生类中都被视为私有,包括原本的公有和保护成员。派生类内部可以访问基类的公有和保护成员,但外部代码不能直接访问基类的任何成员。 - **保护继承(protected)**...

    C++实现继承

    2. **根据继承的方式**:公有继承、保护继承、私有继承。 - **公有继承**:父类的公有成员和保护成员在子类中保持原有的访问属性。 - **保护继承**:父类的公有成员和保护成员在子类中变为保护成员。 - **私有...

    c++继承的视频

    - **私有继承(private)**:基类的公有和保护成员在子类中变为私有。 - **保护继承(protected)**:基类的公有成员在子类中变为保护,保护成员保持不变。 4. **虚函数与多态** - **虚函数(virtual function)...

    C/C++ 公有继承、保护继承和私有继承的对比详解

    C++ 提供了三种继承方式:公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance),每种方式都有不同的访问权限和行为。 1. **公有继承(Public Inheritance)** -...

    C++继承与派生机制详解

    C++支持三种不同的继承方式:私有继承、保护继承和公有继承。每种继承方式都会影响到派生类成员以及通过派生类对象访问基类成员的权限。 1. **私有继承(Private Inheritance)** - 私有继承将基类中的公有和保护...

    C++ 中私有继承的作用

    在C++编程语言中,私有继承(private inheritance)是一种特殊的继承方式,它与公有继承(public inheritance)和保护继承(protected inheritance)并列,是面向对象编程中的一个重要概念。私有继承的主要作用和...

    c++继承与派生的相关资料

    私有继承通常用来表示“is-implemented-in-terms-of”关系,即派生类是用基类实现的,但并不表示“is-a”关系。 5.4.3 保护成员和保护继承(Protected Inheritance) 保护继承方式下,基类的公有和保护成员在派生类...

    c++继承分类

    6. 继承中的访问控制:解释公有继承、保护继承和私有继承的区别,以及它们对子类访问权限的影响。 7. 小结和最佳实践:总结继承的使用场景,提供关于何时以及如何使用继承的最佳实践。 通过学习这个视频教程,你将...

    C++重点复习题(多态和继承).doc

    在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的私有成员。基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类的成员函数来访问。 六、基类和派生类的关系 派生...

    C++继承与派生

    私有继承下,基类的公有和保护成员在派生类中将变为私有;而保护继承则使得基类的公有成员在派生类中变为保护成员。 #### 5.2 派生类的构造函数和析构函数 派生类的构造函数需要调用基类的构造函数来初始化继承自...

    C++三种继承方式

    根据继承时成员的访问属性不同,C++提供了三种继承方式:公有继承(public)、保护继承(protected)以及私有继承(private)。本文将详细介绍这三种继承方式及其特点。 #### 二、公有继承(Public Inheritance) ...

    c++ 的封装继承多态例子

    同时,这些类可能会有私有数据成员,以及公有构造函数和访问器方法,体现封装特性。如果文件中还有其他类,可能是为了展示如何通过继承和多态构建复杂的类层次结构。 通过学习和实践这些例子,开发者能够更好地理解...

Global site tag (gtag.js) - Google Analytics