c++
文章平均质量分 69
fanfan_1120
一个正在学习软件编程路上的小人人
展开
-
C++入门基础知识
一、命名空间namespace1.命名空间是指标识符的可见范围,C++标准库中的所有标识符都在std的命名空间里。2.命名空间的使用:#include using namespace std;//命名空间的定义int main(){ //{}为命名空间的作用域 int a = 0; return 0;}3.使用标识符限定原创 2017-09-27 20:31:01 · 180 阅读 · 0 评论 -
C++异常处理
1 异常处理 异常处理是一种允许两个独立开发的程序组件在程序执行期间遇到程序不正常的情况,相互通信的机制。一般的异常为:除0错误,数组越界,内存不足等; 在C语言中遇到异常的处理方式:终止程序(发生段错误时),返回错误码(在系统编程中常见)等; 但是此类方式都不能清晰的告诉程序猿发生了什么错误,描述的不明确,所以C++中引入了异常处理机制。2 异常处理机制 异常处理的思想:当函数在...原创 2018-08-13 23:55:59 · 339 阅读 · 0 评论 -
智能指针——shared_ptr & weak_ptr
shared_ptr(引用计数) & weak_ptr 让auto_ptr和scoped_ptr 很费脑子的一件事情就是:在拷贝构造和赋值操作的时候,进行的是浅拷贝,就会在析构的时候对同一块空间析构多次。 对于此问题,有一个很经典的解决办法:引用计数!!! 在拷贝构造和赋值运算符重载的时候,原指针 ap1 和 ap2 共享一个引用计数,对该引用计数进行++ 在析构的时候,查看引用计...原创 2018-08-17 23:07:50 · 180 阅读 · 0 评论 -
虚基表和虚表
1 虚基表 (1)菱形继承 在菱形继承中,类D有两个_a,一个是B类从A类继承而来的,一个是C类从A类继承而来的 在对D类赋值时必须指定是对那个_a赋值,否则会出现数据不明确的问题。 所以菱形继承会造成数据的二义性。//菱形继承class A{public: int _a;};class B:public A{public: int _b;}...原创 2018-07-21 10:53:02 · 3531 阅读 · 0 评论 -
多态
1 多态 多态是指多种形态,就是说对于一个函数可以实现多种功能; 看一个实例:虽然调用的是同一个函数,但是却出现了两个不同的结果class Base{public: virtual void f1() { cout << "Base::f1()" << endl; }};class Derived...原创 2018-07-20 10:26:55 · 304 阅读 · 0 评论 -
C++动态内存管理
1 内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的 整个运行期间都存在。例如全局变量,static 变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函 数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集 中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在...原创 2018-07-14 16:29:46 · 284 阅读 · 0 评论 -
重载 & 重定义(隐藏)&重写(覆盖)
1 重载 重载是指:同名函数,不同参数的函数之间,互相称为重载函数 构成重载的条件: (1)在同一作用域中; (2)两个函数的函数名相同; (3)两个函数的参数不同; (3)两个函数的返回值可以相同也可以不相同。//两个f1()函数互相重载class Base{public: void f1(int i) { cout &amp;lt;&amp;lt; &quot;...原创 2018-07-19 17:29:17 · 268 阅读 · 0 评论 -
C++六个默认成员函数
二、六个默认成员函数1.构造函数(1)构造函数的函数名与类名相同;(2)构造函数无返回值;(3)对象构造时系统自动调用相应的构造函数;(4)构造函数可以重载;(5)构造函数可以在类内/类外定义;(6)无参的构造函数和全缺的构造函数只能有一个。//构造函数#include <iostream>#include <stdlib.h>using namespace std;...原创 2018-07-06 17:05:36 · 238 阅读 · 0 评论 -
继承(隐藏 & 派生类的六个默认成员函数)
1 隐藏(重定义) 隐藏是指:在基类和派生类中有同名的成员变量或成员函数,那么派生类的成员变量、成员函数就将基类的隐藏(重定义)了。 如何调用隐藏的成员函数(或使用隐藏的成员变量)? 指定作用域 2 派生类的六个默认成员函数 在默认情况下,派生类的默认成员函数由基类的成员函数合成(具体实现见下面的代码) (1)构造函数 子类的构造函数,继承了父类的构造函数,需要先调用父类...原创 2018-07-17 16:11:24 · 596 阅读 · 0 评论 -
初识继承(继承方式 + “切片”)
1 继承概念 对于继承,我们可以形象的理解为是一种父子的关系,子类继承父类(就像是孩子继承了父亲的某些特征),是C++的一种特性。 通过继承可以提高程序的可复用性。 被继承的类我们称之为父类(基类),继承的类称为子类(派生类)。 在C++中既可以单继承,即每次只继承一个类(可以多次继承);也可以多继承,即每次可继承多个类。如何理解可复用性? (1)定义了一个函数,每次需要借助该函数的...原创 2018-07-16 16:29:18 · 336 阅读 · 0 评论 -
模板的分离编译
一、编译过程二、模板为什么不能分离编译捏?三、 该怎么解决模板不能分离编译的原创 2017-12-07 16:36:36 · 123 阅读 · 0 评论 -
模拟new[]/delete[]申请和释放
一.总结并剖析malloc/free和new/delete之间关系和差异1.为什么C++要定义new/free?2.malloc/free和new/delete的区别和联系二.剖析new/delete、new[]/delete[]到底做了什么三.实现NEW_ARRAY/DELETE_ARRAY宏,模拟new[]/delete[]申请和释放数组原创 2017-11-05 08:45:37 · 185 阅读 · 0 评论 -
构造&拷贝构造的N中调用情况
C++对传参合传返回值时构造的优化处理1.C++对传参时要生成一个临时变量,调用一次构造函数;2.再调用一次拷贝构造函数将临时变量复制给实参,也就是传参过程至少调用一次构造函数和一次拷贝构造函数;3.对于传引用时,编译器会自动优化,不需生成临时变量,因为形参出了作用域还存在,所以不需要调用拷贝构造函数;4.如果还有赋值运算,编译器将拷贝构造和赋值运算合并为一步。原创 2017-10-22 09:16:32 · 174 阅读 · 0 评论 -
C++类和对象
一、类和对象的基础知识1.类的定义2.访问限定符3.面向对象封装性二、四个默认成员函数1.构造函数2.拷贝构造函数3.析构函数4.运算符重载三、隐含的this指针原创 2017-10-09 21:11:38 · 235 阅读 · 0 评论 -
智能指针——auto_ptr & scoped_ptr
智能指针auto_ptr#include &amp;lt;iostream&amp;gt;using namespace std;template &amp;lt;class T&amp;gt;class auto_ptr{public: auto_ptr(T* ptr) :_ptr(ptr) ,_owner(true) { cout&amp;l原创 2018-08-16 23:46:22 · 213 阅读 · 0 评论