摘要:
多态性是指在父类中定义的属性和方法被子类继承后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或者方法在父类及其各个子类中具有不同的含义。 多态性 我们先来看一段代码和它的运行结果: #include <iostream> using namespace std; class A { p 阅读全文
摘要:
孔子云:杀鸡用牛刀者,所谓向上造型也。 向上造型 显然孔子没说过开头那段话。 假设我们有一个父类 A 类,一个子类 B 类。 class A { public: A() : i(10) {} void Print() { cout << "a.i = " << i << endl; } privat 阅读全文
摘要:
oop 的三大特性就是封装、继承、多态性。其中「继承」的目的其实是实现「软件重用」。 我们希望在做程序的时候可以尽量的利用以前的代码来减少的们的工作量,这就是所谓「重用」。但是实现软件重用的方式却不只有「继承」一种,本文将整理包括「继承」在内的两种软件重用方式。 对象的组合 组合对象的意义 对象的组 阅读全文
摘要:
在前面说到面向对象原理的时候提到访问限制,即外部操作不可以访问类内的成员而只能访问类给外部的接口(或者说“服务”)。 这主要通过三种不同的访问属性实现,下面将再详细的介绍一下访问属性相关的细节。 Setting limits 保证使用类的程序员不能随便修改类内部的数据。 保证维护类的程序员可以修改类 阅读全文
摘要:
Dynamic memory allocation C++ 的动态空间分配由关键字 new 和 delete 实现,下面是它们的基本用法。 new new int; 分配一个 int 类型的空间。 new Stash; 分配一个 Stash 类对象的空间,并调用构造函数。 new int[10]; 阅读全文
摘要:
生命从出生到死亡,拥有它的一生,对象也是如此。 构造与析构函数,则见证了一个对象的创生与消亡。 对象的初始化与构造函数 初始化 Background Information: 在 C++ 中, 为了提高效率,申请内存之后并不会对内存所占的单元进行清空操作,所以初始化这件事就显得尤为重要。 例如下面这 阅读全文
摘要:
类的定义 类的要用两个分离的 .h 文件(头文件)和 .cpp 文件来定义。 类的声明以及类内所有函数的原型写在 .h 文件。 类的所有函数的具体实现写在 .cpp 文件。 定义和声明 后面几乎所有的定义和声明这两个动词我都加粗强调了,它们的区别很大,也很重要。 头文件里只能存在声明。 extern 阅读全文
摘要:
关于段老师发的无类型指针的调用错误问题 先声明一下,下面这段话是和段老师讨论过的,并非个人瞎猜,大家可以放心看。 无类型指针的坑? void*类型的指针可以指向任意类型的变量,当我们调用它时,必须先把它强制转换为它所指变量的类型的指针。 这造成了一个问题,那就是这个指针因为指向了不确定类型的变量,而 阅读全文
摘要:
今天终于开始学习面向对象了,b 站大学真是太牛逼啦! 浙大翁恺老师的课讲得很清楚,疯狂安利! 【浙江大学】面向对象程序设计,教授:翁恺 面向对象基本原理 面向对象程序设计,object-oriented-programming (OOP),在这种方式的程序设计中,把每一个变量看作是一个对象,通过调用 阅读全文
摘要:
面向对象学习笔记(避雷篇) 时间还挺快的,当年的 OIer 已经上大学啦!在大学的 C++ 学习中,要求我们掌握两种编程技巧,即面向对象和面向过程。 因为高中时期不管是 CSP 还是 NOIp 的比赛,大家用的基本上都是面向过程的设计思路,因此我开学后就着重开始学习面向对象的方法。 这里对面向对象的 阅读全文