您的位置:首页 > 编程语言 > C语言/C++

深入理解c++中public,protected,及private用法。

2015-04-22 16:53 351 查看
学习c++有一段时间了,越来越感觉c及c++基础的重要性,以前一直对c++的private,public,protected及继承有一些疑惑,看过了前辈们的讲解,顿时茅塞顿开,可能有些书上讲解的很详细,但是不一定能让大家理解的清晰透彻,所以我想写一篇自己的理解,希望可以帮助一些新学习c++语言的朋友们。

c++语言的几个特性是抽象,封装,继承,多态。这里我们主要研究一下封装和继承。

1.在无继承的情况下,类内部可以随意访问,即使是private,;类外部无法访问protected/private成员
.但是可以访问public成员。

通过这个例子,大家可以看到本类中的成员函数是可以访问私有成员的,但在类外,本例子就是main()中,是不能访问私有和保护成员的。

2. (先确定类继承方式,

再确定继承后子类的新成员属性,

最后确定子类内部/外部的访问权限:!!!此时即使是在子类的内部也不能访问父类的private

)

1.若是public继承的话,父类的public/protected/private属性继承到子类时,均不会变化
新成员

在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

在子类外部访问时,无法访问子类的新成员protected/private

2.若是protected继承的话,父类的public/protected/private属性继承到子类时,会变化为[b]新成员(protected/protected/private)[/b]

在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

在子类外部访问时,无法访问子类的新成员protected/private

3.若是private继承的话,父类的public/protected/private属性继承到子类时,会变化为private/private/private;

在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

在子类外部访问时,无法访问子类的新成员protected/private

相信大家看了上面的例子会有更深的理解,大家可以自己动手编写一下上面的例子,会有意想不到的收获。

给大家总结几句话:

1.public继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:public, protected, private

2.protected继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:protected, protected, private

3.private继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:private, private, private

但无论哪种继承方式,下面几点都没有改变:

1.private成员只能被本类成员(类内)和友元访问,不能被派生类访问;

2.protected成员可以被派生类访问;

3.基类的private成员不能被派生类访问,但是基类的protected成员可以被派生类访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: