Articles

  • rsync

    Table of Contents

  • C/C++ Basics

    Table of Contents

    Rules

    Regular Types
    Implement Complete and Efficient Types
    Algorithm
    No Raw Loops
    Data Structure
    No incidental Data Structure

    An incidental data structure is a data structure that occurs within a system when there is no object representing the structure as a whole

    structures formed in the absence of a whole/part relationship.

    Runtime Polymorphism
    No Raw Pointers
    Concurrency
    No Raw Synchronization Primitives

    面向对象

    面向对象的三个基本特征

    1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)
    2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
    3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

    多态

    多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。 如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。

    C++ 中的多态性具体体现在运行和编译两个方面:

    • 运行时多态是动态多态,其具体引用的对象在运行时才能确定。
    • 编译时多态是静态多态,在编译时就可以确定对象使用的形式。

    多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

    多态的作用

    主要是两个:

    1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;
    2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

    虚函数表

    对 C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。 简称为 V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。 这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。

  • define vs const

    Introduction

    This article describes the differences between define and const in both C and C++ programming languages.