c++学习随笔(基本概念篇)

(一)基类和派生类

  • 派生:从一个类构造另一个类的方法,使新构造的类替代原来的类。例如,狗派生自动物类,动物类是狗的基类。派生类除了自己的成员外,还包括基类的所有成员。在某些上下文环境中,派生类称为子类,基类称为父类
  • 虚函数:在基类中定义的一个函数,在派生类中有一个类型和名字一样的函数,当程序调用基类函数时,实际上调用的是派生类的函数。这通常称为运行时多态,动态分派或者运行时分派,因为具体调用哪个函数是根据运行时实际使用的对象类型来决定的。
  • 虚函数表/虚指针:为了处理一个虚函数调用(如上所述),我们需要(且必须)在基类或者是派生类中存储更多信息,目的是当我们调用虚函数时,借助这些存储信息分辨出究竟调用哪个函数。这个存储信息,我们称之为vtbl(虚函数列表,实际上是一个函数列表的地址),它的地址我们用vtpr(虚指针)来表示
  • 覆盖:定义一个和基类中虚函数同名同类型的函数,以使派生类的函数代替基类中的版本被放入vtbl中的技术
  • 纯虚函数:一个或者多个必须在派生类中被覆盖的虚函数。带有纯虚函数的类的目标是提供纯粹的接口,即它们倾向于不包含任何数据成员,因此没有任何构造函数
  • 私有和保护成员:我们保持类的实现细节是私有的,以保护他不被直接访问,简化维护操作,这称为封装

     继承,运行时多态和封装的使用,实际上是面向对象程序设计的最常见的标志。

友元:还没学习

时间: 2024-08-05 02:36:20

c++学习随笔(基本概念篇)的相关文章

ETL学习笔记之概念篇

导读:ETL,Extraction-Transformation-Loading的缩写,即数据抽取(Extract).转换(Transform).装载(Load)的过程,它是构建数据仓库的重要环节. 关键词:ETL 数据仓库 OLTP OLAP ETL,Extraction-Transformation-Loading的缩写,即数据抽取(Extract).转换(Transform).装载(Load)的过程,它是构建数据仓库的重要环节. ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库

1、Websphere学习笔记之一概念篇

1.Websphere学习笔记之一概念篇 最近因为工作需要使用Websphere,下班后就适当学习下这中间件吧.今天就看下一些概念和Websphere本身的架构. l Websphere 概念摘自百度百科: WebSphere 是IBM 的软件平台.它包含了编写.运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台.跨产品解决方案所需要的整个中间件基础设施,如服务器.服务和工具.WebSphere 提供了可靠.灵活和健壮的软件. WebSphere ApplicationServer

UML学习-总体概念篇

前言:我们在实施一个项目时,前期的设计是非常重要的,如建筑师在建造一个建筑时,需要事先设计图纸,设计图纸是设计的语言,是不同的工程设计人员.设计人员和生产人员之间进行沟通的语言,在一个现代化的工程里面,人们需要相互沟通和协调合作,就必须使用标准的工业化设计语言,而在计算机项目设计中,UML作优秀的标准设计语言的之一,很值得重视和学习. 最近也在看6大设计原则和23种设计模式,都与UML相关,设计一个优秀的类及其相关联系的类极为重要. 统一建模语言UML(Unified Modeling Lang

学习java随笔第八篇:封装、继承、多态

java和c#一样都是面向对象的语言. 面向对象的语言有三大特征:封装.继承.多态 封装 封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. class Person2 { private String name; public void setName(String name) { this.name=name; } public String getName() { return name; } private String sex; public voi

学习java随笔第七篇:java的类与对象

类 同一个包(同一个目录),类的创建与调用 class Man{ String name; void GetMyName() { System.out.println(name); } } public class Person { public static void main(String arges[]) { Man m=new Man(); m.name="小黄"; m.GetMyName(); } } 运行结果 不同的包(不同目录目录),类的创建与调用 package Peo

学习java随笔第六篇:数组

一维数组 创建一维数组并输出 public class OneDimensionalArray { public static void main(String argas[]) { int i[]=new int[10]; for(int j=0;j<i.length;j++) { i[j]=j; System.out.println(i[j]); } } } 多维数组 创建多维数组并输出 public class MultiDimensional { public static void m

学习java随笔第十一篇:java窗体程序

要开java的窗体程序,就要下载开发窗体的工具. 这里我用的是的myeclipse,可以直接在网上下载安装即可. 我用的是10.0版本的,如果需要汉化的话,可以看一下这篇文章:myeclipse.10安装和汉化方法 java窗体 package java20130629; import javax.swing.*; public class Form extends JFrame { public Form() { this.setLayout(null); JLabel jl=new JLab

JavaWeb学习随笔

Servlet学习随笔 1.HttpServlet init(ServletConfig)------Servlet生命周期中的初始方法,默认情况是服务器创建后第一次访问这个Servlet时调用,可以修改配置信息,使其在服务器一创建时就被调用; 修改配置信息的方法-----在web.xml的<servlet>下添加<load-on-startup>x<load-on-startup>,x是正整数,越小表示优先级越高 url路径的配置,完全匹配>目录匹配>(.

ZMAN的学习笔记之Python篇:装饰器

年前工作事务比较繁琐,我只能用零碎的时间继续学习Python,决定开一个系列的博文,作为自己深入学习Python的记录吧.名字也取好了,就叫<ZMAN的学习笔记之Python篇>~开篇是关于装饰器的,春节假期码的字哈哈~就让我们开始吧! 本文的例子都是自己想的,如果不是很合适,请大家提出宝贵意见哈~谢谢啦! 一.为什么要用“装饰器” 比如我们写了如下一段代码: # 打印0~99 def func(): for i in range(100): print(i) 我们想要监测执行这个函数花费了多

Struts学习傻瓜式入门篇

或许有人觉得struts不容易学,似乎里面的一些概念让未接触过的人迷惑,MVC1.MVC2.模式……我写这篇文章是想让从来没有接触过struts的人,能有个简单的入门指引,当然,系统地学习struts是必要的,里面有很多让人心醉的东东,那是后话了. 该案例包括首页,用户登陆.网站向导页面.就这么简单,没有深奥的struts概念,主要靠动手,然后用心体会. WEB Server用tomcat4.到http://jakarta.apache.org下载struts1.1,把zip文 件释放到c:\s