继承的访问权限

原创 2012年03月28日 14:13:34

继承的访问权限很特别,这里总结两点。


一、private继承的对象不能赋予基类指针

class Base
{
public:
	virtual void f(){cout << "Base:f()" << endl;}
private:
	int a;
};

class Derived:private Base
{
public:
	void f(){cout << "Derived:f()" << endl;}
private:
	int b;
};
int main(int argc, char** args)
{
	Derived d;
	Base* p;
	p = &d;  //错误,因为Derived是Base的private继承。继承后的接口不同,编译不通过。
	p->f();
	return 0;
}
将&d改成Base*类型就没问题了。

p = (Base*)&d;

二、使用基类的指针可以改变子类的访问权限。

以下例子,基类指针访问f,基类中的f是public,可以访问。但是实际上调用的是子类的f,而子类的f却是private。编译通过,运行也没问题。所以基类的指针改变了子类的访问权限,非常奇怪。在C++中,奇怪的事情很多,所以我们编程时最好遵守一些规定,养成良好的编程风格,否则会出现很奇怪的问题。

class Base
{
public:
	virtual void f(){cout << "Base:f()" << endl;}
private:
	int a;
};
class Derived:public Base
{
private:
	void f(){cout << "Derived:f()" << endl;}
private:
	int b;
};
int main(int argc, char** args)
{
	Derived d;
	Base* p;
	p = &d;
	p->f();   //正确,因为p是基类的指针,而f在基类中是public。
//	d.f();      //错误,因为derived的f是private
	return 0;
}


相关文章推荐

c++继承中的三种访问权限.pdf

  • 2014年07月03日 09:41
  • 153KB
  • 下载

java 类继承两个父类,同名变量 public 比protected具有优先访问权限

A 有一个爸爸,一个爷爷, 爸爸和爷爷都有 imgViewGroup1 ,imgViewGroup2 这连个共同属性 而在爸爸中,这两个属性的等级是protected,在爷爷中是pu...

Swift - 类的继承 & 访问权限

上一篇博客《Swift - Struct & Class》的博客可谓是给Swift中的类开了个头。关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限。说到类的继承,接触过面向对象编程(OO...

简要谈谈C++继承方式与访问权限

简单地说下C++类的3种继承方式,分别是public继承,protected继承,private继承。 最常用的还是public继承。class默认的是private继承,它的member如果没写权...

访问权限修饰符(4个),继承的补充;抽象(abstract)、学习笔记

一、继承的补充     继承中的构造方法的关系      1.子类的构造函数第一行  默认有一条隐式的语句 super();         super();调用的是父类的无参构造      ...
  • KY1996
  • KY1996
  • 2017年07月20日 20:20
  • 135

Notes: Java的访问权限、组合/继承和多态

本文章对应《Thinking in Java》的6、7、8章内容。 Chapter 6:  Java访问权限限制的动机:方便库程序员修改工具类的具体实现而不用知会客户端程序员修改客户端代码。作...

java中类之间的继承和访问权限

类的修饰符public是针对不同包之间的访问。类修饰符,对本包之间的类访问,没有影响 。...

C++语言笔记系列之十四——继承后的访问权限

1.析构函数不继承;派生类对象在析构时,基类析构函数的调用顺序与构造函数相反。 注:派生类对象建立时要调用基类构造函数,派生类对象删除时要调用基类析构,顺序与构造函数严格相反。 2.例子 exampl...

关于Java中的继承,包括重写、构造器、访问权限、构造过程等知识总结

关于Java中的继承包括重写构造器访问权限构造过程等知识总结附重载相关知识 1继承的概念 2继承的规则 3构造器 4publicprotecteddefaultprivate权限 5向上转型 6重写o...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:继承的访问权限
举报原因:
原因补充:

(最多只允许输入30个字)