浅析C++:private、protected和public

一:private、protected和public的访问权限问题:

private:1、类中的成员函数可以调用,2、类的友元函数可以调用,3、但是类对象无法直接调用。4、对于派生类,不管是成员函数还是派生类的对象都无法进行调用。

protected:1、类中的成员函数不可以调用,2、类的友元函数可以调用,3、类对象也无法进行调用。4、对于派生类,成员函数可以进行调用,但是派生类的对象则无法进行调用。

public:1、可以被类中的成员函数调用,2、类的友元函数可以调用,3、类对象也可以直接调用。4、对于派生类,成员函数和派生类的对象都可以进行调用。

注:友元函数包括1、设为友元的普通的非成员函数。2、设为友元的其它类的成员函数。3、设为友元类的所有成员函数。

二:关于private、protected和public的继承问题:

1、不管是private、protected还是public,子类继承了基类后,其必然继承了基类所有成员(除了基类的构造函数和析构函数),同样继承了基类空间的大小。

#include<iostream>
using namespace std;

class A
{
public:
    A()
    {
        cout<<"这是class A."<<endl;
    }
private:
    int a;
    int temp;
};

class B : private A
{
public:
    B()
    {
        cout<<"这是class B."<<endl;
    }
private:
    int b;
};

void main()
{
    cout<<sizeof(A)<<endl;
    cout<<sizeof(B)<<endl;
}

继承后容量大小改变示例:

2、类继承后,属性的变化。

  private 属性可以被继承,但是被继承不管什么情况下(除了基类的公有成员函数和基类的友元函数)都不能被直接调用;
  使用private继承,父类的protected和public属性在子类中变为private;
  使用protected继承,父类的protected和public属性在子类中变为protected;
  使用public继承,父类中的protected和public属性不发生改变;

如下所示:

public:            protected:       private:
public继承            public              protected        不可用 
protected继承      protected         protected        不可用 
private继承          private             private            不可用

时间: 2024-10-28 15:43:21

浅析C++:private、protected和public的相关文章

private protected internal public

//C#中的访问修饰符: //private,私有访问修饰符,被private访问修饰符修饰的成员只有在当前类的内部可以访问,其他地方一律不能访问[类中成员,如果不写访问修饰符则默认都是私有的] //protected,表示当前类内部可以访问并且所有的子类内部也可以访问. //注意:protected与internal访问修饰符无所谓哪个更“可访问”,因为判断标准不一样 //protected只看是否是在当前类内部或者所有的子类内部,与是否在同一个程序集中无关 //internal只看是否在同一

private、protected、public和internal的区别

private是完全私有的,只有在类自己里面可以调用,在类的外部和子类都不能调用,子类也不能继承父类的private的属性和方法. protected虽然可以被外界看到,但外界却不能调用,只有自己及自己的子类可以调用(protected的属性和方法都可以被子类所继承和调用). private和protected的共同点:外部都不可以访问. private和protected的不同点:在同一类中可视为一样,但在继承中就不同了,private在派生类中不可以被访问,而protected可以. pub

浅析java修饰符之public default protected private static final abstract

浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 二   分类(大致分两类) 1.访问修饰符,包括:public default protected private 2.非访问修饰符,包括:static final abstract 三 访问修饰符--Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权

从头认识java-5.3 public private protected

这一章节我们来讨论一下public .private和protected 1.CLASS_PATH 环境变量里面的CLASS_PATH,这个路径就是我们java寻找文件的路径. 注意:一般在CLASS_PATH里面都会加上"."代表当前文件夹,如果不加上这个符号,那么,你编辑的java很有可能不能编译,因为在CLASS_PATH里面特定的几个文件夹里面很可能找不到你的源文件. 2.public 对于所有成员公开 package com.ray.ch05; public class Te

关于public private protected访问修饰符

这个似乎都是老生常谈了,特别是找工作第一轮笔试的时候很爱考这些,再罗列一次,特别要注意继承的情况:     默认状态:即是不加修饰符的时候,所谓的default状态,在类内部可以被访问,在相同的包下面的类也可以互相被使用,跨包则不可访问.     public:这个当然是访问权限最宽的时候了,不仅可以在类内部进行访问,也可以在同一包中进行访问,还可以跨包来进行访问.     private:被private修饰符修饰的属性与方法只能在该类的内部进行使用,在同一个包下的不同类也不能被互相访问,子类

再学Java 之 private、protected、public和default的作用域

前言:如果提到protected的访问控制级别,您的第一反应是"只能是子类才可以访问",那么您很可能需要往下看. 首先,大致介绍一下各个访问控制符的访问控制级别(具体的介绍很多大牛的博文都有介绍,我就不细说了,可以点击这里查看),如下图:   private default protected public 同一个类中 √ √ √ √ 同一个包中   √ √ √ 子类中     √ √ 全局范围内       √ 在这里,很多人都存在一个误区,就是,认为protected修饰的方法只能

对private protected public的详解:

1 #include <iostream> 2 #include <stack> 3 #include <queue> 4 #include <exception> 5 #include <sstream> 6 #include <string> 7 #include <vector> 8 #include<list> 9 #include<cassert> 10 #include<cstdl

java中public private protected default的区别

1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用. 3.protected:protected对于子女.朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private. 作用域    当前类  同一package    子孙

php class中public,private,protected的区别,以及实例

一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型,只有在本类中使用. 二,实例 查看复制打印? <?php error_reporting(E_ALL); class test{ public $public; private $private; protected $protected; static $instance; public fun