每天一个面向对象陷阱,一个算法,一个小看法
来源:互联网 发布:执行方案范文知乎 编辑:程序博客网 时间:2024/05/22 04:38
1.每天一个面向对象陷阱
面向对象编程(OOP)概念、思想被很多大师、教科书写过,相信大家也都有了自己的理解。(至少知道继承是个什么玩意儿了)。但是我们看书有个缺点,当然也可能是我自己的缺点。我们看书的时候,应该这么看:语言为什么要这么设计,如果是你,你自己怎么设计。下面来澄清第一个概念。
为什么sizeof(class)不包含那些非虚的虚拟函数(non-virtual member function)?
这个其实说起来很简单。让我们从头看起。类是什么?对象是什么?。让我们从一个比喻开始。我们看到的哺乳动物,比如牛、羊、马都是动物(class),他们都具有属性,比如胖瘦、高低,他们都能跑,跑起来的形式也不一样。牛是慢吞吞的走,羊是有点跳着走,马是飞奔着走(哈哈哈)。
那么问题来了?我们是应该用属性(胖瘦)区分,还是用方法(跑)区分三种动物呢。这个问题仁者见仁,智者见智。但是OOP基本是用属性区分对象的。那么作为能够区分对象的属性当然必须和对象在一起,而那些描述类的动作的就和类在一起,不和对象在一起。
因此,类是描述对象的地图。非虚的虚拟函数(non-virtual member function)在程序中只占据一份内存,作为一个对对象的描述!!!
所以,下面的sizeof()运行结果才只是4。请看程序
#include<iostream>using namespace std;class Animal{public: void Run() { cout << "I'm running" << endl; };private: int Height;};int main(int argc,char*argv[]){ Animal b; cout << sizeof(b) << endl; cout << sizeof(Animal) << endl; return 0;}2.每天一个算法
算法
0 0
- 每天一个面向对象陷阱,一个算法,一个小看法
- 每天一个小算法 --- 排序
- 每天一个小算法(insertion sort3)
- 每天一个小算法(Shell Sort1)
- 每天一个小算法(Shell Sort2)
- 每天一个小算法(Shell Sort3)
- 每天一个小算法(Shell Sort4)
- 每天一个小算法(Shell sort5)
- 每天一个小算法(matlab armijo)
- 每天一个小算法(matlab armijo)
- 每天一个小算法(Heapsort)
- 每天一个小算法(Heapsort)
- 每天一个小算法(Heapsort)
- 每天一个小算法(Heapsort)
- 每天一个小算法(Heapsort)
- 每天一个算法
- js面向对象写法,一个小例子
- Java的一个小陷阱
- Linux Shell 文件重定向
- 动态代理(Proxy)
- 可执行文件(ELF)格式的理解
- Add Two Numbers
- 黑马程序员_日记5_Java多态
- 每天一个面向对象陷阱,一个算法,一个小看法
- 可执行程序的组成
- 利用WebSphere Edge Server构建冷轧系统负载均衡
- UVa 806 - Spatial Structures(DFS)
- Delphi IDHTTP用法详解
- OpenCL-- 统计给定单词在文本中出现次数
- C语言 编写程序数一下1到100的所有整数中出现多少次数字9
- leetcode #1 Two Sum
- 转载04:CSS盒子模型