//  main.cpp
// OOL
// Created by mac on 2019/4/4.
// Copyright © 2019年 mac. All rights reserved.
// 1.在一个类中如果直接把成员函数权限声明成protected或者是private是无法直接被生成的本类对象访问的.
// 2.如果想要访问被protected或者private保护的函数,那么可以在本类的public修饰符下生成新函数,调用那两种函数就可以了。
// 3.BaseClass称为基类或者超类 Derived1成为子类或派生类
// 4.类class的前面是否需要添加访问修饰符,对类本身,对类生成的对象,对继承类,对成员函数,对成员变量都有什么影响
// 5.从基类中的protected权限下继承的g()函数,可以在子类中在public权限下进行g()重写。
// 6.从基类中private权限下继承的h()函数,可以在子类中的public权限下进行h()函数的重写。
// 7.在生成继承类的时候 public virtual 继承是什么意思?
// 8.在生成继承类的时候,子类的public修饰符下的成员函数可以调用基类的protected修饰符下的函数,但是无法调用继承来的privated修饰符下的函数
// 9.在生成派生类的时候 如果是以protected的形式来进行继承的话,那么基类的所有公有、受保护成员在派生类中都会变成受保护的成员。
// 10.对于私有形式的继承,基类的公有成员和受保护的成员在派生类中都变成了私有成员。
// 11.在所有的继承类型中,基类的私有成员都不能在派生类中访问。
// 12.基类的受保护成员只能在派生类中访问,而不能在非派生类中进行访问。这个非派生类除了指类这种东西本身外,还指其他的东西。我觉得这样说还不是很完整,因为基类的受保护成员,在基类定义的内部也是可以被调用的。而非单指的是派生类。
// 13.类的前面添加virtual是为了继承类防止冗余的现象。但是具体的用法还是不清楚。
#include <iostream>
using namespace std;
class BaseClass{
public:
BaseClass(){ }
void f(){
cout<<"f()in BaseClass"<<endl;
}
//1.在基类中重新定义函数进行调用,从而打破访问修饰符的限制。
//2.或者在子类中的public修饰符下重写这个函数。
void c(){
g();
h();
}
protected:
void g(){
cout<<"g()in BaseClass"<<endl;
}
private:
void h(){
cout<<"h()in BaseClass"<<endl;
}
};
//继承基类
class Derived1 : public virtual BaseClass{
public:
//在继承类中重写f()函数
void f(){
g();
//h();
} protected:
private: };
int main(int argc, const char * argv[]) {
BaseClass bc;
bc.c();
Derived1 d1;
//d1.g();
//d1.h();
d1.f();//输出的是继承类的f()函数
d1.BaseClass::f();//输出的基类的f()函数
return 0;
}

Tips

  • 类class的构造函数的前面必须添加public,要不没法生成对象。不加public,默认就是private。
  • 注意结构体struct的构造函数前面不加public,也能正常生成对象。
  • 每个对象都可以通过指针this来访问自己的地址,所以*this就是指的对象本身。
  • 在写析构函数的时候注意区分~的英文或者中文状态,否则编译无法通过。

CPP/类/成员函数访问权限2的更多相关文章

  1. CPP/类/成员函数访问权限

  2. c++学习——类成员的访问权限

    成员的访问权限 Public: 任何人,尤其是那些要使用这个类库的客户程序员,都能访问那个紧跟在public 后面声明的成员. 默认的package: 在同一个目录里面的文件,并且都没有明确指明它是属 ...

  3. Java类和类成员的访问权限修饰符

    一:访问修饰符: 1.省略访问修饰符 具有默认的访问特性,即具有包访问特性,只能被同一个包中的类使用. 2.public访问修饰符 用于说明类和类的成员的访问权限.这种类叫公有类.在一个文件中只能有一 ...

  4. java类成员的访问权限

    private:这是安全级别最高的访问权限,尽在该类中可以访问到: 默认访问权限:又称包访问权限,顾名思义,仅在该包内可以访问: protected:在包访问权限的基础上,该类的子类也可以访问到: p ...

  5. 02-25 类成员的访问权限--internal

    C#中还有一种可访问性,就是由关键字internal所确定的“内部”访问性: internal有点像public,外界类也可以直接访问声明为internal的类或类的成员,但这只局限于同一个程序集内部 ...

  6. Java成员的访问权限控制

    Java中的访问权限控制包含两个部分: 类的访问权限控制 类成员的访问权限控制 对类来说,访问权限控制修饰符可以是public或者无修饰符(默认的包访问权限): 对于类成员来说,访问权限控制修饰符可以 ...

  7. C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数

    C++ 类成员函数 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义. 需要强调一点,在 :: 运算符之前必须使用类名.调用成员函数是在对象上使用点运算符(.),这样它就能操作与 ...

  8. VS2015 导航栏 查看每个cpp文件中类以及类成员函数的框框

    这个可以查看每个cpp文件中类以及类成员函数的框框叫导航栏! 怎么打开导航栏可以再百度.

  9. C++继承后的函数访问权限

    今天在写代码时发现对继承后的函数访问权限不太清楚,于是自己做了个测试: 1.头文件(test.h) 1 #include <iostream>  2 using namespace std ...

随机推荐

  1. js map()处理数组和对象数据

    之前的文章梳理了JS数组与对象属性的遍历方法,本文介绍专门用以遍历并处理数据的map()方法. 一.原生map() map()是数组的一个方法,它创建一个新数组,其结果是该数组中的每个元素都调用一个提 ...

  2. mysql使用笔记(网易Mysql实用手册)---1

    1帮助使用 1.1按层次查看帮助 1 当不知道帮助可提供什么时,可通过MySQL内置帮助文档,一层层往下看. 命令: mysql> ? contents ? 等效help,该文档涵盖了数据库操作 ...

  3. HDFS pipeline写 -- datanode

    站在DataNode的视角,看看pipeline写的流程,本文不分析客户端部分,从客户端写数据之前拿到了3个可写的block位置说起. 每个datanode会创建一个线程DataXceiverServ ...

  4. Vue2学习笔记:v-on

    Vue的事件: v-on: click/mouseover/mouseover/mousedown/dbclick/... 下面是点击事件介绍: 1.点击事件 <!DOCTYPE html> ...

  5. java多线程读取、操作List集合

    import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.ArrayUtils;   pub ...

  6. 安装 jemalloc for mysql

    参考: MySQL bug:https://bugs.mysql.com/bug.php?id=83047&tdsourcetag=s_pcqq_aiomsg https://github.c ...

  7. 铁乐学Python_Day35_Socket模块3和hmac模块

    验证客户端链接的合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂, 那么可以利用hmac+加盐的方式来实现. 例1:简单的服务端如下 #!/usr/bin/env ...

  8. PAT 1001A+B Format

    Github 1001 题目速览 1.解题的思路过程 认真读题,题目为A+BFormat,简单的计算a+b问题,特殊在于输出的形式. 输入形式为每个输入文件包含一个测试样例,每个测试样例仅包含一对整型 ...

  9. RYU基础整理

    1. RYU结构,源码 1.1 RYU文件目录 下面介绍ryu/ryu目录下的主要目录内容. base base中有一个非常重要的文件:app_manager.py,其作用是RYU应用的管理中心.用于 ...

  10. 【Alpha】Daily Scrum Meeting 集合贴

    coding:https://git.coding.net/hmCoding/LearnTGP.git 11月14日:http://www.cnblogs.com/polk-blogs/p/78270 ...