
C++
wang yang
用心走在C的道路上—— Romantic_c
展开
-
C++继承
C++内存管理认识内存中的堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆:就是那些由 new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个 de...原创 2018-08-10 02:10:26 · 338 阅读 · 0 评论 -
c和c++的区别
c是面向过程的,数据与算法分开。它的重点在于算法和数据结构。侧重于计算机底层操作。 c++是面向对象的,主要特点是类,封装和继承。与C的区别主要为 :类、继承和多重继承、运算符重载、类模板、C++标准库、模板库。 C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不...原创 2018-08-08 17:50:55 · 8490 阅读 · 0 评论 -
探索new/malloc 、delete /free区别
C内存管理堆上 C语言中使用malloc/calloc/realloc/free进行动态内存管理,malloc/calloc/realloc用来在堆上开辟空间,free将申请的空间释放掉 堆上的内存需要用户自己来管理,动态malloc/calloc/realloc的空间,必须free掉,否则会造成内存泄露探索malloc、calloc、realloc区别...原创 2018-08-08 17:19:24 · 413 阅读 · 0 评论 -
友元
友元分为:友元函数和友元类友元函数 友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。 1.友元函数可访问类的私有成员,但不是类的成员函数 2.友元函数不能用const修饰 3.友元函数可以在类定义的任何地方声明,不受类访问限定符限制 4.一个函数可以是多个类...原创 2018-08-08 11:39:27 · 503 阅读 · 0 评论 -
类对象模型
类—->实例化—->对象 类有大小(只包含成员变量大小),没有实际空间。空类大小为1(区分类对象)。类的实例化 用类类型创建对象的过程,称为类的实例化 1. 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它 2. 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间存储类成员变量 3....原创 2018-08-07 15:20:13 · 2469 阅读 · 0 评论 -
内联函数与宏函数的区别
内联函数概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率特性 inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的的函数不适宜使用内联 2.inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内...原创 2018-08-07 22:04:20 · 5336 阅读 · 1 评论 -
类的六个默认成员函数、const、static用法
1.构造函数构造函数概念 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的生命周期内只调用一次,保证每个数据成员都有一个合适的初始值构造函数特性 1.函数名与类名相同 2.没有返回值 3.新对象被创建时,由编译器自动调用,且在对象的生命周期内仅调用一次 4.构造函数可以重载,实参决定了调用...原创 2018-08-07 21:03:49 · 777 阅读 · 0 评论 -
智能指针及其实现
智能指针:不需要用户去考虑申请的空间什么时候释放(将可以解决这个问题的指针成为智能指针)RAII(Resource Acquisition Is Initialization) RAII(资源分配即初始化)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。 即(定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构...原创 2018-08-12 00:59:13 · 454 阅读 · 0 评论 -
引用&指针、传值&传引用&传址的区别
引用概念(贴标签式) 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间 类型& 引用变量名(对象名) = 引用实体;使用场景 1.作为函数形参 2.作为函数返回值注意事项 a. 引用在定义时必须初始化 b. 一个变量可以有多个引...原创 2018-08-07 13:30:45 · 1691 阅读 · 0 评论 -
C++异常处理
C++异常处理方式 1 . 终止程序(除数为0) 2 . 返回一个表示错误的值,附加错误码(GetLastError()) 3 . 返回一个合法值,让程序处于某种非法的状态(坑爹的atoi()) 4 . 调用一个预先准备好在出现”错误”的情况下用的函数(回调函数) 5 . 暴力解决方式:abort()或者exit() 6 . 使用goto语句 7 ....原创 2018-08-11 14:59:34 · 334 阅读 · 0 评论 -
C++模板
泛型编程 泛型编程:编写与类型无关的逻辑代码,是代码复用的一种手段。模板是泛型编程的基础函数模板模板分类:函数模板、类模板概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本函数模板格式 template < typename T1, typename T2,……,cl...原创 2018-08-11 13:17:30 · 379 阅读 · 0 评论 -
C++函数重载
1.C与C++函数对比:返回值: C语言函数缺省返回值,默认为int。 C++不支持函数返回值缺省,如果一个函数没有返回值则必须指定为void。参数列表: 在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数。 在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。但C++参数列表中可以存在缺省参数,C语言不可...原创 2018-08-06 18:55:07 · 584 阅读 · 0 评论 -
C++多态
多态:具有多种形态,在不同的条件下,有不同的状态1、静态多态(静态链编译,静态绑定,早绑定) 静态多态是编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误函数重载相关知识点//函数重载举例int Add(int left, int right){ ...原创 2018-08-10 20:39:26 · 412 阅读 · 0 评论