#include<iostream>
#include<string>
using namespace std;
class parent{
protected:
int m_a;
int m_b;
public:
int m_c;
void set(int a,int b,int c){
m_a = a;
m_b = b;
m_c = c;
}
};
class child_A:public parent{
public:
void print(){
cout << "m_a=" << m_a << endl;
cout << "m_b=" << m_b << endl;
cout << "m_c=" << m_c << endl;
}
};
class child_B:protected parent{
public:
void print(){
cout << "m_a=" << m_a << endl;
cout << "m_b=" << m_b << endl;
cout << "m_c=" << m_c << endl;
, 顶端
} };
class child_C:private parent{
public:
void print(){
cout << "m_a=" << m_a << endl;
cout << "m_b=" << m_b << endl;
cout << "m_c=" << m_c << endl;
} };
int main(){
child_A a;//public继承
child_B b;//protected 继承
child_C c;//private继承
a.m_c = ;//
//b.m_c = 100;//
//c.m_c = 100;
return ;
a.print();
b.print();
c.print();
cout << endl;
a.set(,,);
b.set(,,);
c.set(,,);
}
//结果

class.cpp:10:7: error: ‘void parent::set(int, int, int)’ is inaccessible
void set(int a,int b,int c){
^
class.cpp:54:13: error: within this context
b.set(2,2,2);
^
class.cpp:54:13: error: ‘parent’ is not an accessible base of ‘child_B’
class.cpp:10:7: error: ‘void parent::set(int, int, int)’ is inaccessible
void set(int a,int b,int c){
^
class.cpp:55:13: error: within this context
c.set(3,3,3);
^
class.cpp:55:13: error: ‘parent’ is not an accessible base of ‘child_C’

public、potected 、private继承下的子类对父类成员的访问情况的更多相关文章

  1. c++ public protected private 继承

    1:访问控制 1.1 public 这类型成员可以被类本身函数访问,也可以被外部创建的类对象调用.子类对象与子类内部可以访问 1.2 protected类型成员,只能被类本身函数访问.外部创建的类对象 ...

  2. 关于protected在子类创建父类对象无法访问父类protected方法或成员

    子类(父类的外部包)中访问父类的protetcted属性或者方法,是不可以通过创建父类对象调用的.注意:此处不讨论同包下的父类子类,因为同包下所有类都可访问protected属性或者方法. 请参见Ja ...

  3. c++子类和父类成员函数重名

    子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数. 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名 ...

  4. 7,C++ public, protected, private 继承的区别

    在某处看到一张图,简单明了的说明了三者的关系,很是佩服,遂记录下来. //公有继承 对象访问 成员访问 public --> public Y Y protected --> protec ...

  5. 访问权限PPP(public、private、protected、default)之成员变量、成员变量权限解析

    首先,我们需要清楚一下方法是由哪些部分构成的: [权限修饰符列表][别的修饰符列表] 返回值类型 方法名(参数列表){   方法体:} 然后我们需要知道成员变量和成员方法访问有几种情况:1.当前包同一 ...

  6. c/c++ 继承与多态 子类隐藏父类的同名非虚函数

    问题1:若类A里有公有成员方法int fcn(),类B公有继承类A,并类B里有公有成员方法int fcn(int),可以在用户代码里,用类B的对象调用类A的int fcn()吗?? 不可以,编译出错, ...

  7. python 子类调用父类成员的方法

    1.直接写类名调用: parent_class.parent_attribute(self) class Animal(): def __init__(self, name): self.name = ...

  8. c++继承构造子类调用父类构造函数的问题及关于容器指针的问题及当容器里储存指针时,记得要手动释放

    看下面的一个问题: class Person { private: string name; public: Person(const string& s=""){ nam ...

  9. C++中public,protected,private派生类继承问题和访问权限问题

    C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...

随机推荐

  1. Redux:中间件

    redux中间件概念 比较容易理解. 在使用redux时,改变store state的一个固定套路是调用store.dispatch(action)方法,将action送到reducer中. 所谓中间 ...

  2. 必须返回对象时,别妄想返回其reference 【Effective C++ 条款21】

    class Rational { public: Rational(, ) : n(numerator), d(denominator) { printf("Rational Constru ...

  3. SpringBoot_自动装配

    SpringBoot SrpingBoot 给人的第一印象就是 简洁,易上手.它是自 Spring 而来为了简化我们开发的,而经历过了 Spring 中繁琐的配置文件,我确实很好奇它到底是怎么帮我们把 ...

  4. 06 . Python3入门之IO编程(文件操作)

    IO编程简介 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 ...

  5. 管程(Monitor)概念及Java的实现原理

    互斥 互斥访问是并发编程要解决的核心问题之一. 有许多种方法可以满足临界区的互斥访问.大体上可以分为三种, 一种是软件方法,即由用户程序承担互斥访问的责任,而不需要依赖编程语言或操作系统,譬如Dekk ...

  6. Chisel3 - model - IO ports

    https://mp.weixin.qq.com/s/fgCvIFt0RdEajhJVSy125w   介绍模块的输入输出端口的定义与管理.     1. _ports   1) 模块的输入输出端口, ...

  7. Java实现 LeetCode 653 两数之和 IV - 输入 BST(递归,找差值)

    653. 两数之和 IV - 输入 BST 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 案例 1: 输入: 5 / \ 3 6 / ...

  8. Java实现 LeetCode 912 排序数组(用数组去代替排序O(N))

    912. 排序数组 给你一个整数数组 nums,将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0, ...

  9. Java实现 蓝桥杯 历届试题 小计算器

    历届试题 小计算器 时间限制:1.0s 内存限制:256.0MB 问题描述 模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个 ...

  10. Java实现 LeetCode 144 二叉树的前序遍历

    144. 二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] /** * Definition for a ...