
c++学习
Blessing_zf
脚踏实地,每一天都是最美的时光
展开
-
解析C++中函数重载的实现原理
C++中函数重载一、定义 当两个及两个以上函数共用一个函数名,但是形参个数或者类型不同,编译器根据实参与形参的类型及个数的最佳匹配,自动确定调用那一个函数,这就是函数的重载。换而言之,在同一作用域,一组函数名相同,参数列表不同(个数和类型),返回类型可同,可不同的情况下,编译器根据调用者传入的参数类型和个数可以唯一可以唯一确定调用哪个函数,这也就是函数的重载。原创 2017-07-04 16:32:22 · 845 阅读 · 0 评论 -
C++动态内存分配
C++动态内存分配一、C语言中动态内存如何分配?在C中,可以调用malloc/calloc/realloc函数向系统申请一块存储空间,使用结束用free函数释放空间,因为申请的空间均在堆上申请,需要手动释放,否则会出现内存泄漏。。二、C++中的动态内存分配C++中提供两种运算符new和delete,使用它们更方便实现内存空间的动态分配。原创 2017-07-19 14:30:24 · 888 阅读 · 0 评论 -
C++写时拷贝
写时拷贝copy on write**首先什么时候会用到写时拷贝呢? 答:顾名思义修改的时候才拷贝,是为了解决浅拷贝的坑和平衡内存开销大而出的解决方案。原创 2017-07-25 20:14:44 · 365 阅读 · 0 评论 -
浅谈C++多态&多态对象模型
多态所谓多态,其实就是“多种形态”,C++的多态分为静态多态和动态多态。 1. 静态多态就是重载,因为是在编译期决议确定,所以称为静态多态。 2. 动态多态就是通过继承重写基类的虚函数实现的多态,因为是在运⾏时决议确定,所以称为动态多态。C++中虚函数的主要作⽤——就是实现多态。简单说⽗类的指针/引⽤调⽤重写的虚函数,当⽗类指针/引⽤指向⽗类对象时调⽤的是⽗类的虚函数,指向⼦类对象时调⽤的是⼦类原创 2017-08-01 16:42:30 · 569 阅读 · 0 评论 -
菱形继承
菱形继承 在谈完单继承模型和多继承模型之后,我们来进一步了解更复杂的继承模型——菱形继承。 菱形继承又叫钻石继承。主要结构如图:菱形继承中含有单继承和多继承。由于class B 和class C都继承了class A中的共有成员_a。那么在class D 多继承时就了存在二义性和数据冗余的问题,虚继承为解决此问题而存在。所以,菱形继承又多出来一种特例——含有虚继承的菱形继原创 2017-08-03 20:07:36 · 400 阅读 · 0 评论 -
基本栈和队列 及后续面试题
基本栈和队列栈Stack-------后进先出#pragma once#include#includeusing namespace std;templateclass Stack{public: Stack() :_a(NULL) , _size(0) , _capacity(0) {} ~Stack() { if (_a) { delet原创 2017-10-06 13:58:55 · 253 阅读 · 0 评论 -
rotate-list将单链表从右数第k个节点以及之后的节点移到链表最前头
题目描述:Given1->2->3->4->5->NULLand k =2, return4->5->1->2->3->NULL. 解题思路:第一步,将链表最后一个节点和头结点相连。 第二步,指针指向从右数第k个节点,用这个指针来确定之后返回的链表。 第三步,断开新的头结点和之前节点之间的联系。 具...原创 2018-06-11 15:17:48 · 481 阅读 · 0 评论 -
有序单链表转换成二叉平衡搜索树
题目: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.关键词:有序单链表、二叉平衡搜索树 二叉树搜索:对于所有节点,顺序是:left children <= current node <= right c...原创 2018-06-11 09:41:25 · 1062 阅读 · 0 评论