c++
MaiDang_
进阶的小菜鸟
展开
-
单例模式
知识补充:一.static 成员变量 1. 一定要在类外初始化 2. 静态成员变量属于类作用域 3. 不依赖对象static 成员方法 1. _cdecl调用约定 没有this指针 2. 不依赖对象调用 3. 能看见类中所有的成员* ->* 这两个操作符号是...原创 2019-03-13 16:36:20 · 103 阅读 · 0 评论 -
malloc 和 new 的区别
一.区别: 1.new 在 自由存储区域 开辟空间 malloc 堆上 2.new 返回类型安全 malloc 返回类型不安全(返回void *) 3.new 开辟时不需要计算内存开辟的大小 malloc 开辟时需要计算内存开辟的大小 4.new 失败抛出异常 (bad_alloc)...原创 2019-03-13 15:36:06 · 106 阅读 · 0 评论 -
const修饰指针
(1) 指向非const数据的非const指针 书写形式为: int *countPtr ; 特点: 指针的指向可以被修改,指向的数据可以被修改#include<iostream>int main(){ int x = 10; int y = 20; std::cout << "x:" << x &...原创 2019-03-20 13:35:03 · 521 阅读 · 0 评论 -
智能指针原理理解 和 ->运算符的重载
一个内存泄漏的实例:#include<iostream>void Func(int *p){ int *ptmp = new int; if (p == NULL) { throw std::exception("p is null!"); } *ptmp = *p; delete ptmp;}int main(){ while (true) {...原创 2019-03-14 23:32:47 · 411 阅读 · 0 评论 -
内存池(创建以后基本不释放,要释放需要自己实现这个功能)
//单例模式的#include<iostream>#include<string>const int MEM_SIZE = 10;template<typename T>class MEM_Management //单例模式{public: static MEM_Management<T>* getInstance() {...原创 2019-03-14 18:27:23 · 633 阅读 · 0 评论 -
容器适配器-实现vector
#include<iostream>#include<stack>using namespace std;template<typename _Ty>class Vector{public: typedef _Ty value_type;public: Vector() { parr = new _Ty[2](); cursize...原创 2019-03-14 18:23:54 · 299 阅读 · 0 评论 -
模板
第一类:函数模板 1.函数模板:函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。 2.模板函数:在使用函数模板时,要将这个形参实例化为确定的数据类型。将类型形参实例化的参数称为模板实参; 用模板实参实例化的函数称为模板函数。模板函数的生成就是将函数模板的类型形参实例化的过程。...原创 2019-03-13 23:13:32 · 137 阅读 · 0 评论 -
构造函数&析构函数&拷贝构造函数&赋值运算符重载
构造函数&析构函数&拷贝构造函数&赋值运算符重载特点:1.构造函数 (有this指针) 系统会给默认构造 构造函数可以被重载(生而不同) 不能手动调到,因为其是对象生成的一部分 2.析构函数 析构函数不能被重载 (死亡方式一样) ...原创 2019-01-16 15:08:55 · 652 阅读 · 0 评论 -
c++基础----类和对象
有现实抽象一事物的过程: c++的三大特征: 封装 继承 多态 所谓封装就是使用三个访问限定符来限制成员变量和成员方法的读取权限: 1. public 修饰,任意位置可见 2. private 修饰,本类中可见 3. protected 修饰,在本类中和子类类中可见在这里说...原创 2019-01-15 22:52:36 · 122 阅读 · 0 评论 -
c/c++相互调用 & 引用
c/c++相互调用: 由于c和c++的符号生成规则不同,因此不能直接在一方中引入另外一方,因此:1. 在c++中调用c ,只需要在 .cpp原文件里加入: extern "c" { }2. c调用 c++ 将 .cpp文件全部包含到 extern "c" 中3. 若...原创 2019-01-10 11:47:15 · 520 阅读 · 0 评论 -
函数默认值& C和C++的符号生成 &函数重载 &内联函数 &const在c和c++中的区别 & 基本数据类型的隐式转换规则
函数的默认值: 1.自右向左依次赋值 2.不能重复赋值 3.一般给在声明上例如; int Sum(int a,int b, int c = 10); C和C++的符号生成: c语言中,符号生成只与 函数名 有关 c++中,符号和函数原型有关(函数返回值+函数名+参数列表) 函数重载: ...原创 2019-01-08 23:52:32 · 173 阅读 · 0 评论 -
对象的生命周期&类与结构体
对象的生命周期: 1. 类 类型的返回值都是由临时对象带出来的 2. 对于 Student stu1 = (Student)("zhangsan",19,56,70.2); 这是一个逗号表达式,在等式的右边,("zhangsan",19,56,70.2),这个逗号表达式的取值为最后一个,即: 70.2 ...原创 2019-01-18 13:35:36 · 553 阅读 · 0 评论 -
虚拟地址空间&编译链接原理&函数堆栈调用&四种调用约定
1.虚拟地址空间进程地址空间需要隔离,防止恶意的程序修改其它程序的内存数据,因此计算机中引入虚拟地址空间。虚拟地址空间布局2.编译链接原理编译和链接:1)预编译(生成*.i文件) 手动命令为 : gcc -E .c -o .i 1>将所有的“#define”删除,并且展开所有宏; 2>处理掉所有条件预编译指令,如:“#if...转载 2019-01-03 22:33:29 · 383 阅读 · 0 评论