c++
小宣子xym
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++中的强制类型转换
const_cast const_cast最常用的用途就是删除变量的const属性,方便赋值。 void TestConst() { const int a = 2; //volatile const int a = 2; int* p = const_cast< int*>(&a); *p = 3; cout << a << end原创 2017-11-28 18:55:04 · 208 阅读 · 0 评论 -
STL空间配置器分析
今天阅读了《STL源码剖析》了解了一下stl中空间配置器的原理,一下进行分析总结 stl中对于空间的配置与释放 std::alloc 在stl中对象构造前的空间配置和对象释放后的空间释放,是由...原创 2018-06-07 20:49:00 · 613 阅读 · 0 评论 -
c/c++ 动态内存管理(一)
C语言中 使用:malloc/calloc/realloc/free 进行动态内存管理 calloc:分配n个长度为size的连续内存空间,并初始为0 realloc:重新分配空间 void* realloc(void* p,size_t size) p为指向之前分配的内存块的指针 int*p1=(int*)malloc(sizeof(int)*4); int*p2=(int*)c...原创 2018-02-26 19:12:18 · 336 阅读 · 0 评论 -
模拟实现atoi
#include #include #include #include #include //考虑到以下几点: //NULL //空字符串 //+- //溢出 enum Status { VALID,//合法 INVALID//非法 }; enum Status status = INVALID; int my_atoi(const char *str) { int flag = -原创 2018-01-21 14:59:23 · 221 阅读 · 0 评论 -
关于引用
引用==别名给已有变量起一个别名 一个变量可以有多个别名(就像一个人可以有很多小名) 引用必须在创建时就初始化(起别名时总要知道是给谁起) 引用只能在初始化时,引用一次,引用后就不能再改变为其它变量的引用 const 引用一个变量加上const,就是常变量(常量的一种),具有常性,不可直接修改注意点: int d1 = 4; const int & d2 = d1; d1 = 5;原创 2018-01-02 17:54:48 · 281 阅读 · 0 评论 -
为什么模板不支持分离编译
说到这,我们首先来说一下什么是 分离编译? 声明和定义分开 预处理 宏替换 条件编译 .h的展开 编译 .cpp .cpp->汇编代码 汇编 cpu机器码 链接 -> 链接前两个.cpp不交互 //template.h #pragma once #include using namesp原创 2017-12-07 13:58:06 · 185 阅读 · 0 评论 -
智能指针分析
为什么有智能指针?在我们写代码时,经常会忘记释放掉动态开辟出来的内存,或者在我们的程序中,new和delete中间有如 throw/goto/return/break 这样引起执行流改变的语句时,就会造成没有释放资源,造成内存泄漏。void Test1() { int* p=new int[100]; Test(); ... delete[] p;调用的Test2()中如果有抛异常的话,就会无法释放原创 2017-11-26 16:35:37 · 341 阅读 · 0 评论 -
类型萃取&类的模板特化
类模板的特化 1、全特化 2、偏特化(局部特化) 1、全特化template <> class Data<int, char> { public : Data() { cout<<"Data(int, char)"<<endl; }private : int _d1 ; char _d2 ; };2、偏特化(局部特化)偏特化分为两种1原创 2017-11-30 17:10:19 · 300 阅读 · 0 评论 -
多态&虚函数
虚函数:在类的成员函数前面加上关键字“virtual”,就称这个成员函数为虚函数。虚函数重写:在子类中定义了一个与父类完全相同(函数名和返回类型以及参数列表都相同)的虚函数时,称子类的这个函数重写(也称覆盖)了父类的这个虚函数。多态:一个类继承另一个类时,对一个函数进行重写,则此函数呈多态(多种形态)。为了指明某个成员函数具有多态性,就用关键字“virtual”来标志其为虚函数。#include<i原创 2017-11-03 17:47:54 · 444 阅读 · 0 评论 -
c++入门【菜鸟学习日记】
从c到c++c++包含了整个c,c是建立c++的基础。c++包括c的全部特征、属性和优点,同时添加了面向对象编程(oop)的完全支持。c++语言包括过程性语言部分和类部分。过程性语言部分与c并无本质的差别,类部分是c中所没有的,它是面向对象程序设计的主体。面向对象程序设计的本质是把数据和处理数据的过程当成一个整体——对象。面向对象程序设计的实现需要封装和数据隐藏技术,需要**继承和多态性##技术。1原创 2017-09-26 19:44:51 · 382 阅读 · 0 评论 -
模板
1、模板与泛型编程 模板是泛型编程的基础。泛型编程就是一种与类型无关的逻辑代码,是一种复用的方式。 利用模板机制可以显著的减少冗余信息。原创 2017-11-17 15:17:18 · 245 阅读 · 0 评论 -
c++实现单/双链表
单链表#include<iostream> using namespace std;typedef int DataType;struct SListNode //在c++中结构体也就是一个类 { SListNode* _next; DataType _data; SListNode(DataType x) :_data(x) ,_next原创 2017-11-03 15:33:18 · 253 阅读 · 0 评论 -
c++实现顺序表
//顺序表就是动态增长的数组 #include<iostream> #include<assert.h> using namespace std;typedef int DataType;class SeqList { public: SeqList()//构造 :_array(NULL) , _size(0) , _capacity(0)原创 2017-10-26 22:08:21 · 333 阅读 · 0 评论 -
调用时编译器的优化问题
构造拷贝构造的N种调用情况的编译器优化1、传参合传返回值时构造的优化处理include<iostream> using namespace std;class Date { public: Date()//构造 { cout << "Date()" << endl; } Date(const Date& d)//拷贝 { cou原创 2017-10-25 18:03:38 · 291 阅读 · 0 评论 -
动态链编与静态链编
重载 1、函数在同一作用域里 2、函数名相同/参数不同 3、返回值可以不同 重写(覆盖) 1、函数不在同一作用域里(两个函数分别在父类和子类里) 2、函数名相同/参数列表相同/返回值相同(协变除外) 3、基类函数必须是虚函数(有关键字virtual) 4、访问修饰符可以不同 重定义(隐藏) 1、函数在不同作用域里(分别在父类和子类里) 2、函数名相同 3、在基类和派...原创 2017-11-12 20:20:29 · 1264 阅读 · 0 评论 -
探索多态的实现--虚表
上次说到了多态,可是多态在编译器里到底是如何实现的呢?下面我们就来探索一下它深层的实现机制class Base { public: virtual void func1() {} virtual void func2() {} private: int a1; };void Test() { Base a; cout << sizeof(a)原创 2017-11-05 20:04:54 · 349 阅读 · 0 评论
分享