对私有继承成员的公有化

在C++中一般很少采用私有继承。

一般采用的都是公有继承的方式:

class A:public B{...};

但是私有继承在我们只要部分公有化继承成员的时候是很有用的。

当采用的是私有继承的时候,基类中的public都会变成private 。而此时如果我们希望其中的一部分成员是可视的话,那么我们只要在继承的类的public中声明他们就好了。

#include<iostream>
using namespace std;
class Pet{
	public:
		void eat()const{cout<<"eating\n";}
		void speak()const{cout<<"wa~wa~\n";}
		int height(int x){

			return x;
		}
};
class Dog:Pet{
	public:
		 Pet::eat;
      	Pet::speak;
      	Pet::height;
};
int main()
{
	Dog z;
	z.eat();
	cout<<"height is   "<<z.height(4)<<endl;
		z.speak();
	return 0;
}

而注意的是我们在继承的类中的public的重新声明当中,不管函数的参数,只要写入函数名就可以了。

时间: 2024-10-04 12:16:40

对私有继承成员的公有化的相关文章

关于C++中公有继承、私有继承、保护继承的讨论

一.文章来由 简单明了的理由,老生常谈但是没真正解决的问题,想搞清楚这个问题. 二.冗长的定义 我们先来看看这些冗长的定义: 公有继承: 当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类的私有成员不可直接访问.也就是说基类的公有成员和保护成员被继承到派生类中访问属性不变,仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们.在类族之外只能通过派生类的对象访问从基类继承的公有成员. 私有继承: 当类的继承方式为私有继承时,基类中的公有成员和保护成员

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

公有继承时基类中各成员属性保持不变,基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的public成员. 私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏.派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象不能访问基类中的任何的成员. 保护继承时基类中各成员属性均变为protected,并且基类中p

概念:类继承—公有继承、私有继承、保护继承

一.公有(Pulic)继承 “继承”是类的重要特性.A类继承B类,我们称B类为“基类”,也称为“父类”,A类则相应地被称为“派生类”或“子类”.A类继承了B类之后,A类就具有了B类的部分成员.那么,究竟从基类那儿得到了哪些成员,这由2方面决定,①继承方式,②基类成员的访问权限(即public/private/protected). 继承有三种方式,即公有(Public)继承.私有(Private)继承.保护(Protected)继承.我们先讨论最常用的公有继承.公有继承就是将基类的公有成员变为自

C++公有继承、保护继承和私有继承

C++中的继承方式有: public.private.protected三种(它们直接影响到派生类的成员.及其对象对基类成员访问的规则). (1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的public成员. (2)private(私有继承):继承时基类中各成员属性均变为private,并且基类中private成员被隐藏.派

public/protect/private和公有继承/保护继承/私有继承的简单理解

一.先来看一下没有继承的情况 类中的变量访问: (1)类内访问方式:通过public成员函数访问 (2)类外访问方式:直接访问 表 1 class A { public: int a; protected: int b; private: int c; public: int getAll(){ return a + b + c; } }; int main() { A testA; //类外访问方式 testA.a; testA.b; testA.c; //类内访问方式 testA.getAl

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

继承成员访问控制机制(C++)

 面向对象编程其中肯定少不了类的继承机制,而类的继承又分为三种类型:公有继承(public).私有继承(private)和保护继承(protected),不同的继承机制使派生类对基类成员有不同的访问权限,而派生类的类成员和对象成员对基类又有不同的访问权限. 在开始介绍派生类的访问机制之前,我们先来了解一下类的成员和对象的成员. 类的成员 静态成员,即类的static类型成员,它可以访问类中的所有成员,可以直接用类.属性(方法)来表示 对象的成员 非静态成员,必须先new一个类的对象,通过对象

谈谈C++私有继承

许多C++程序员从来没用过私有继承来设计他的类.的确,如果是本该用私有继承的地方却用了公有继承,对程序的功能的实现并无影响.但这种误用是一种错位的描述,会引起阅读者的误解,甚至会引起类的使用者的茫然.当我们在写一个类的声明的时候,实际上是在做一个意图的设计.而设计者需要的恰恰是精确描述. 私有继承的弦外之音 要解释私有继承,我们先来看看共有继承,好做个比较. 公有继承,本质上就是 is-a 的关系.如,描述吉普车是一种车,那么可以进行以下的设计: class Car { }; class Jee

c++继承详解:共有(public)继承,私有继承(private)继承,保护(protected)继承

公有继承(public)继承.私有继承(private).保护继承(protected)是常用的三种继承方式. 1.公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问. 2.私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问. 3.保护继承 保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,