随笔分类 - C_Cpp
c语言相关部分
摘要:面向对象编程和GP泛型编程 c++标准库 标准库并不是用面向对象的概念设计出来的 面向对象的概念关键点: class与class的继承关系 虚函数 -> 抽象class或者接口 面向对象库复杂的点在于继承关系很复杂 OOP(Object-Oriented programming) 关键概念: cla
阅读全文
摘要:容器使用之Array 使用 c++当中容器都被定义在以容器为名的头文件当中 使用时需要引入头文件 关键点: 因为容器都有一个适配器去分配内存.所以声明array的时候要告诉编译器 array放置的数据类型 array的大小 示例代码: #pragma#ifndef __ARRAY__#define
阅读全文
摘要:容器使用之multiset 可以理解为小型关联数据库 底层结构: 红黑树 示例代码: #pragma#ifndef __MULTISET__#define __MMULTISE__#include <set>#include <iostream>using namespace std;name
阅读全文
摘要:容器结构分类 容器在内存的布局方式 红黑树 高度平衡二分树,树的左边和右边会自己调整高度,避免查找的时候找到某一种很长的线一直找下去 set和map都有红黑树实现 HashTable链表过长 链表的查找要一个一个查找.链表过程会导致速度过慢 设置每一个链表不能过长 如果过长就会通过算法打散
阅读全文
摘要:C++ Standard Library architecure & sources c++官网 C标准库 -> 一个一个单一的函数function -> 彼此几乎无关联 c++标准库 -> 六个部分 -> 彼此之间有紧密的关联 c++标准库主要是用模板做出来的 泛型编程(Generic Progr
阅读全文
摘要:重载全局的new和delete ::operator new ::operator new[] -> 不可以被声明与同一个namespace之内 new会执行三个动作: -> 之前的代码提到: new本身会开辟内存空间.所以声明方法需要一个size_t size的参数 inline void* op
阅读全文
摘要:vptr和vtbl(虚指针和虚函数表) c++代码的抽象类是 -> 类当中只包含纯虚函数 当一个类有虚函数,即便类当中没有成员变量.他的对象大小也会有一根指针大小 -> 由操作系统决定指针多大 虚函数 子类的对象里面有父类的成分 示例结构代码: #pragma#ifndef __VPTR_AND_V
阅读全文
摘要:const在类和函数之间的运用 第一种情况简单来说就是如果声明了一个const类但是调用了非const的方法.那么编译会不通过 -> const类只能调用const方法,非const类就都可以调用 示例代码: 宏定义: #pragma#ifndef __CONST_OBJECT__#define _
阅读全文
摘要:对象模型 - this 通过一个对象来调用一个函数,那么对象的地址就是this 虚函数的模板方法使用方式 template method 示例代码: #pragma#ifndef __THIS_TEMPLATE_MODEL__#define __THIS_TEMPLATE_MODEL__class
阅读全文
摘要:Reference 三种变量 值 -> value 指针 -> pointer 引用 -> reference &取址符 示例代码: #include <iostream>using namespace std;int main() { int x = 0; int* p = &x; // in
阅读全文
摘要:C与C++在函数和数据的比较 C Data(struct) 数据是一个类型 -> 根据数据的类型创建出真正的数据 Function 函数就是用来处理数据的 缺陷: 语言没提供关键字.所以数据是全局的 -> 各个函数都可以处理数据 C++ Data 将数据和处理这些数据的函数包裹在一起,其他函数看不到
阅读全文
摘要:Veriadic templates 数量不定的模板参数 声明方式: #pragma once#ifndef __VARIADICT__#define __VARIADICT__/*为什么需要定义这个空函数,因为传参到最后传入最后一位参数时后面的一组参数已经没有了.就是0所以这个版本就是没有参数的
阅读全文
摘要:namespace 测试程序使用namespace包裹 示例代码: #include <iostream>#include <memory>#include <list>namespace jj01{ void test_member_template() {}}namespace jj02{ t
阅读全文
摘要:Pointer-like classes像指针又像函数 智能指针概念: 一个类做出来像类又像指针 示例代码: #pragma once#ifndef __SHAREPOINTER__#define __SHAREPOINTER__template<class T>class shared_ptr{
阅读全文
摘要:泛型编程(Generic Programming) 虚函数 -> 含有虚函数的类就是抽象类 编译(compile) 链接(link) 转换函数(Conversion function) 例如将小数转成分数,就是一个转换函数 #pragma once#ifndef __FRACTION__#defin
阅读全文
摘要:Composite设计模式 虚函数 继承与父类.又可以携带指针(Delegation) 示例代码: component.h -> 统一父类 #pragma once#ifndef __COMPONENT__#define __COMPONENT__class Component{ int valu
阅读全文
摘要:类和类之间的关系 Object Oriented Programming Object Oriented Design 面向对象的思想:类与类之间产生关系 关系: Inheritance -> 继承 Composition -> 复合 Delegation -> 委托 -> Composition
阅读全文
摘要:类模板、函数模板、其他 static 示例代码: #ifndef __COMPLEX__#define __COMPLEX__class complex{ // 成员函数的隐藏参数有this -> 形参不能写.返回值当中可以写可以不写 public: double real() const { r
阅读全文
摘要:类定义(class definition) class以外的函数 存在的一定是函数 如果是class的函数,那么一定带有类名::function 要么就是全局函数,函数名称不会带有class_name_function_name 非成员函数(无this) 示例代码: inline complexop
阅读全文
摘要:Class with pointer member(s) -> 带指针的类 String字符串为讲解对象 设计一个Class先设计头文件 示例代码: #pragma once// 防卫式声明#ifndef __STRING__#define __STRING__#include <string.
阅读全文