C++
每天要吃一桶饭
持续性话痴,间歇性话唠。
展开
-
C++——Inline 函数
Inline函数是介于宏和普通函数之间的 函数体。集宏和普通函数的优点于一体inline:优点 : 避免调用时的额外开销(入栈与出栈操作) 代价 : 由于内联函数的函数体在代码段中会出现多个"副本", 因此会增加代 码段的空间。 本质 : 以牺牲代码段空间为代价, 提高程序的运行时间的效率。 适用场景: 函数体很"小", 且被"频...原创 2019-06-05 22:00:27 · 97 阅读 · 0 评论 -
C++——Inherit && Derive
继承:实现了代码的可重用性。类的继承, 是新的类从已有类那里得到已有的特性。 或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类, 产生的新类称为派生类或子类。派生与继承, 是同一种意义两种称谓。继承:Is a 的关系 public;语法:1、单继承Class Derive :public Base{}2、 多继承Class Derive:publi...原创 2019-06-28 17:36:13 · 1235 阅读 · 0 评论 -
C++——多态实现原理剖析
此处懵懂。先占个地,懂了再来补充。1、虚函数表测试代码:#include<iostream>using namespace std;class Base{public: virtual void f() { cout << "void f()" << endl; } virtual void g() {...原创 2019-07-03 15:27:37 · 132 阅读 · 0 评论 -
C++——基于多态的设计模式DIP
基于多态的依赖倒置原则 DIP (Dependency Inversion Principle)在设计一个系统的过程中,存在这几个模块:(1)高层模块(负责复杂的业务逻辑) (2)底层模块(负责具体的实现操作)传统的过程化设计:自顶向下,逐层分解。使高层次的模块依赖于低层次的模块。如果让高层模块直接依赖底层模块,那么如果高层需要变动,则低层也要跟着全部修改,将会带来不必要...原创 2019-07-02 15:28:17 · 579 阅读 · 0 评论 -
C++虚函数实现机制
转自:c++虚函数大牛的文章,通俗易懂,言简意赅。拿来膜拜一下。(真实原因:原文都是倾斜体,看的头歪 /xiaoku.jpeg)前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来...转载 2019-07-01 20:40:55 · 292 阅读 · 0 评论 -
C++——运算符重载实践
操作符左右同类重载重载举例:重载 + 实现两个符数的相加; 重载 << 流输出运算符 实现 cout<<c<<endl; 直接输出c的real&imagine。(1)重载 + 部分,分别用友元和成员重载。体会两者不同 友元重载时,+函数定义在类声明之外,得传递两个参数c1,c2 使其相加。 operator+(c1...原创 2019-06-21 23:08:51 · 179 阅读 · 0 评论 -
C++——奔放的友元
奔放的友元C++中采用类的机制后实现了数据的隐藏与封装, 类的数据成员一般定义为私有成员, 成员函数一般定义为公有的。依此提供类与外界间的通信接口。但是, 有时需要定义一些函数, 这些函数不是类的一部分, 但又需要频繁地访问类的数据成员, 这时可以将这些函数定义为该类的友元函数。除了友元函数外, 还有友元类, 两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型和安全性检查及...原创 2019-06-17 11:34:13 · 122 阅读 · 0 评论 -
C++——默认参数
Default ArgC++ 默认参数函数在调用时,形参从实参那里取得值。C++给出了可以不用从实参取值的方法,给形参以默认值。函数声明处: void weatherForcast(char * w="sunny") 默认初始化为sunnyweatherForcast(); 调用时,如果不传参,即用初始默认值 sunnyweatherForcast...原创 2019-06-03 23:05:09 · 217 阅读 · 0 评论 -
C++——重载
重载:根据语义来确定相应的功能 1、函数重载函数重载:c++简化编程, 通过函数重名来达到简化编程的目的1)函数重载条件:函数名相同,参数列表、类型、个数、顺序不同。返回值类型, 不作为重载的标准。2)匹配规则C++ 允许, int到long和double,double到int和float,int到short 和 char 等隐式类型转换。 遇到这种情型, 则会引起二义...原创 2019-06-03 22:38:03 · 250 阅读 · 0 评论 -
C++预热——C++对C的增强
1、类型增强(1)严格的类型检查,两者类型必须完全相同才可以划等号。(2)逻辑类型BOOL。C语言中可以用enum枚举类型来构造一个bool,而c++中给出了该类型(3)枚举类型更强大。c 语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而 C++中枚举变量,只能用被枚举出来的元素初始化。(4)表达式可赋值。C++中某些表达式是可以赋值。(a = b) = 10;(a<b...原创 2019-06-03 22:10:02 · 166 阅读 · 0 评论 -
C++链表封装
头文件 mylist.h#ifndef MYLIST_H#define MYLIST_Htypedef struct node{ int data; //数据域 struct node *next; //指针域}Node;class mylist{public: mylist(); ~mylist(); void insertLis...原创 2019-06-09 12:00:38 · 479 阅读 · 0 评论 -
C++——构造器与析构器
引入:在使用Class时,得先自己初始化一段空间。 类外成员函数:void init();但是在有了构造器之后可用构造自动初始化一段空间。Class Stack{ Stack() //有参与无参定义 (默认值?) { Top = 0; Space = new char (1024);}//Void init ( ); // 用如上 Stack()构造器 取代 并且...原创 2019-06-09 00:45:47 · 502 阅读 · 0 评论 -
C++——类扩展
1、class member storagesizeof ( class )sizeof 求类的大小会发现,类的大小取决于数据成员的大小,而与成员函数没关系。成员函数并不用类的存储空间。这就很纳闷了,成员函数不需要面子的嘛? 为啥不给朕空间呢?#include <iostream>using namespace std;class time{public:...原创 2019-06-14 00:48:29 · 3001 阅读 · 0 评论 -
C++—— Reference &引用
引用基础理解首先 解释一下 int a = 100假设100 所存放的内存地址为 0x00000001 int类型 四个字节,就找到了100所在的内存空间。a = 100; 也就是:*(int *)0x00000001= 100; 将地址转为指针类型再取内容// a是变量名:实质上是表示一段内存空间的别名-->别名再取个名 就是引用~ int a = ...原创 2019-06-02 19:38:21 · 1108 阅读 · 0 评论 -
C++——封装
C语言封装风格:C语言中 将数据放到一起用struct打包,然后把数据以引用或者指针的方式传递给行为函数。(C中 数据和行为函数是分开的,C++中struct可放在一起。但是用C++用struct封装的类,既知其接口,又可以直接访问其内部数据,这样却没有达到信息隐蔽的功效 --> 由此引出C++的类:类名也是一种变相的命名空间)C++封装1、数据和行为分开,没有权限控制。...原创 2019-06-07 01:11:58 · 838 阅读 · 0 评论 -
C++——string 超强进阶
string 是 C++中处理字符串的类,是对 c 语言中字符串的数据和行为的包装。 使其对字符串的处理, 更简单易用。C++中 类string 相比C增强的地方:(1)赋值更简单,更加开放!(2)字符串可实现 + < > = != += 的运算骚操作(3)字符串成员函数 代替 <string.h>中的各种常用操作(查找、求长、比较 and s...原创 2019-06-06 01:02:48 · 161 阅读 · 0 评论 -
C++——Namesake命名空间
在大型项目中,由多个人共同完成的项目可能存在同名的函数或是全局变量而产生冲突。C++引入命名空间,在每个模块出现重名的情况下仍可以正常工作。(1)全局无名命名空间 :: v ::func() 可以表示全局变量或函数(2)Namespace 。期本质是对全局空间再次划分。确切的说,是对全局的函数和变量再次进行作用域打包 可以应用于多种类型。 如原创 2019-06-06 00:08:15 · 143 阅读 · 0 评论 -
C++——Polymorphism 多态
多态,字面理解就是一个事物的多种形态。实际上是:不同的事物对同一行为做出的不同的反应。C++中的多态:由继承而产生的相关的不同的类, 其对象对同一消息会作出不同的响应。多态性是面向对象程序设计的一个重要特征, 能增加程序的灵活性。 可以减轻系统升级,维护,调试的工作量和复杂度。1、赋值兼容 Assign Compatible在需要基类对象的任何地方, 都可以使用公有派生类的对...原创 2019-07-01 01:15:39 · 346 阅读 · 0 评论