首页 > 编程语言 >思考(C++)

思考(C++)

时间:2023-03-15 13:58:29浏览次数:40  
标签:修饰符 多态 C++ 访问 接口 思考 属性

为什么C++类中成员访问修饰符是private、protected、public三种而不是别的?

面向对象的三大特征是:封装,继承和多态

封装是指隐藏对象的属性和实现细节,仅对外公开接口使得使用者通过接口按照接口规定的方式对类中的属性进行访问,

那么要实现隐藏对象的属性这一目的就需要有私有(private)这个修饰符去修饰。

但是我们希望的是别人按照自己我们希望的方法去访问类内成员属性,而不是彻底不允许访问(纯粹封闭的类是没有意义的),所以也应该存在公共这一访问修饰符(public)来修饰我们允许被别人使用的接口方法。

而protected是为继承而存在,一些属性是为了满足这样的属性,希望它可以在该类和派生类中去使用而不希望被外界访问,所以就存在peotected这种访问方式。

如何理解多态

多态是说同一种方法通过不同的方式去调用能够完成不同的事情,C++可以使用虚函数实现的对象之间的多态,从另一方面去理解的话,函数的重载也是一种多态,即调用同一个函数因为传入的参数不同可能执行的动作不同,但是它是一种静态的多态,而是用虚函数实现的对象之间的多态是一种动态的多态

如何理解静态和动态


// 未完待续

标签:修饰符,多态,C++,访问,接口,思考,属性
From: https://www.cnblogs.com/fau152/p/17218220.html

相关文章

  • opencv读取摄像头并显示的C++代码
    #include<opencv2/opencv.hpp>#include<iostream>usingnamespacecv;usingnamespacestd;intmain(){//创建VideoCapture对象,参数为0表示打开默认摄像头......
  • C++/Qt网络通讯模块设计与实现(二)
    上一节给出了C++/Qt网络通讯模块的设计类图,以及各类的作用描述,详见C++Qt网络通讯模块设计与实现(一),这节讲述类的具体实现,源码之前,了无秘密,让大家彻底从原理上明白。SNetC......
  • c++ pass function as argument
    //util.cpp#include"model/util.h"voidutil::invoke_func_args(constutil&ul,constint&len){utilulcopy=ul;pass_func_args(ulcopy,len,&get_str_u......
  • C++/Qt网络通讯模块设计与实现(一)
    模块介绍网络通讯模块负责网络数据包的发送、接收以及对外提供功能调用以及接口回调,其不进行产品业务的实现。传输协议基于TCP可靠传输。用途平台化复用类图详细讲......
  • 一个轻量级简单易用的c++请求库
    Sion是一个轻量级简单易用的c++请求库仅单个头文件,自带std::string的扩展跨平台,支持linux,win,mac...有着良好的异步支持,可以选择以自己喜欢的方式发送异步请求,cal......
  • c++11多线程入门<学习记录>
    最近学习了c++多线程相关知识,也算是对这方面内容的入门视频链接c++11并发与多线程视频课程看了大概两周,简单进行总结参考文章C++11并发与多线程PS:c++11提供了标准的可......
  • C++ STL标准模板库使用
    C++STL标准模板库使用在线手册参考C++STL(标准模板库)是一组标准的C++库,包含了许多常用的数据结构和算法,可大大提高开发效率。以下是常用的STL组件:容器(Container......
  • c++ noexcept与constexpr解析
    文章目录​​1.noexcept无需抛出异常​​​​2.constexpr静态编译关键字​​​​编译期常量​​​​类中constexpr​​1.noexcept无需抛出异常在C++中使用noexcept来标识......
  • C++ 哈希表的总结与例题
    文章目录​​C++STL​​​​哈希表​​​​设计哈希集合​​​​设计哈希映射​​​​哈希集合​​​​例题一:只出现一次的数字​​​​例题二:快乐数​​​​哈希映射​​​......
  • 以下是一个使用C++实现HTTP文件下载的简单示例,其中使用了C++ 11的标准库和Boost库:
    #include<iostream>#include<fstream>#include<boost/asio.hpp>usingboost::asio::ip::tcp;intmain(){try{boost::asio::io_serviceio_se......