C++
shidya
这个作者很懒,什么都没留下…
展开
-
2D碰撞计算SAT
定义常用形状的数据结构class FRectangle{public: FRectangle(fPoint2 center, fPoint2 halfExt, float angle) { this->center = center; this->halfExt = halfExt; this->angle = angle; } fPoint2 center;//中心点 fPoint2 half...原创 2020-07-27 15:29:24 · 221 阅读 · 0 评论 -
HeapSort
排序思想:调整堆调整每一组parant、child节点。从待调整位置2*n+1向下调整。注意判断是否有右孩子堆排序分为两步。1:初始化堆。2:交换堆顶和从n-1..1位置的值原创 2017-03-22 23:08:58 · 187 阅读 · 0 评论 -
快速排序算法
快速排序算法基本思想:选择基准数分区对小分区递归PS:递归实现比较简单。选好基准数是关键。注意下标检测,还是容易混乱的。原创 2017-03-22 23:07:04 · 169 阅读 · 0 评论 -
class static member 重名问题
static变量存放在data segment段。作为全局静态变量。多个类的static变量重名了怎么解决: 对每一个static data member 编码(name-mangling) (重载什么的也是这种方法) 例如: print(int); print(float);原创 2017-03-22 23:06:01 · 295 阅读 · 0 评论 -
NRV
这里举一个NRV优化的例子。一般有copy constructor会NRV优化。现在没有这个规定,根据编译器各有不同。没有copy constructor 使用bitwise copy 效率也很高效。原创 2017-03-22 23:04:49 · 903 阅读 · 0 评论 -
编程规范
编程规范笔记1.组合:通过成员变量的方式替代继承。多继承,用组合代替。2.继承3.异常一定能被捕获到分配内存失败错误码难以返回,比如流系统中与第三方c++库结合处使用异常测试框架中保证异常发生后资源不泄漏4.头文件、头注释/********************************原创 2017-03-22 23:03:57 · 220 阅读 · 0 评论 -
截断&&上转型
class A{public: A() { } ~A() { } virtual void display() { cout }};class B : public A原创 2017-03-22 23:02:56 · 237 阅读 · 0 评论 -
Default Constructor && Copy Constructor
Bite Copy Semantics (位逐次拷贝)1.Default Constructor 将class 对象中的值原原本本的copy到另一个对象中。 产生的问题: class A{ public: /* //在bitwise copy semantics时注释,表原创 2017-03-22 23:02:01 · 309 阅读 · 0 评论 -
OB&OO
OB:object-basedOO:object-orientedOB:只将数据以类为基础抽象封装(效率较高)OO:面向对象,支持三大特性:封装、继承、多态。(弹性较高)原创 2017-03-22 23:00:49 · 475 阅读 · 0 评论 -
RAII和RTTI
RTTI (Run-Time Type Information) 程序通过基类的指针或引用检测所指向对象的实际派生类。主要用到虚函数typeiddynamic_cast虚函数,通过虚函数表指针的指向来避免使用RTTItypeid,返回一个const typeid_info & 函数。type_info是不允许创建的(通过私有构造函数和原创 2017-03-22 22:53:19 · 957 阅读 · 0 评论 -
C++11新特性整理
模板别名override、delete、default、final右值引用、move函数静态断言 static_assert();lambda 匿名函数constexpr 编译器不支持initializer_listfor 新用法。enum class 强类型枚举构造函数中调用构造函数原创 2017-03-22 22:49:45 · 500 阅读 · 0 评论 -
Template
这里封装一个stack来演示template原创 2017-03-22 22:48:14 · 220 阅读 · 0 评论 -
c++11安装
linux update c++wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz进入到目录gcc-4.8.2,运行:./contrib/download_prerequisites (帮助我们下载、配置、安装依赖库)../configure –enable-check原创 2017-03-22 22:47:39 · 5485 阅读 · 0 评论 -
基础指针(待续)
首先说明下指针数组和数组指针指针数组:int * parr[3];结合性 int *(parr[3]);指针数量:3;PS:首先作为数组为一个整体。int* 表示数组里保存的是地址。parr不能单独使用,parr[n]作为指针才是可操作的p[n]作为int * ,++步长为sizeof(int)原创 2017-03-22 22:44:36 · 288 阅读 · 0 评论 -
CPP内存占用和sizeof计算大小的问题
1.先来个最简单的这里占用1字节作为占位。一个char 填充。当然还有空字节的。为0。这里要说明 构造函数、析构函数和一般函数都放在代码区sizeof是不计算其占用内存的。2.虚函数、char和static占用4+4+4+8+4 = 24B这里说明virtual是有指针存放在对象中的占4B。3.虚继承c原创 2017-03-22 22:43:16 · 599 阅读 · 0 评论 -
operator重写
这里重写=、==、+=、+、a++、++a、--作为例子实现:主函数:PS:这里涉及到一些隐式转换的东西,之后整理出来。我认为重写operator主要用在简化对象与对象间的基本操作。用的多了容易混乱。原创 2017-03-22 22:42:36 · 847 阅读 · 0 评论 -
Virtual
先看例子接下来会讲解virtual实现原理。贴个图这里让编译器把一个virtual函数名字转换成指向这些函数的指针表的一个下标。所以virtual函数占用类中的4个字节(32位机器)。vtbl这里被称为"虚函数表"。每个带有虚函数的类都有标识的虚函数表。原创 2017-03-22 22:41:59 · 282 阅读 · 0 评论 -
class私有变量、const类型
private成员变量的问题:在A的add方法中访问B对象的私有成员,很明显的错误。b1.add(b2) 正确执行。之前一直以为private作用域是这个对象。private作用域是这个类的方法,和友元(函数、成员函数、类)。const类型参数const和返回值constPS:1.const对象不能调用自身this原创 2017-03-22 22:41:27 · 686 阅读 · 0 评论 -
友元函数、友元类、友元成员函数
1、友元函数友元函数是可以访问类的私有成员的非成员函数.也就是定义在类外面的普通函数,不属于类,但是确实类的亲密朋友。2、友元类声明为友元类,则A的私有成员在B的所有方法里都可以被访问。3、友元成员函数下面例子A类的成员函数可以访问B类的私有成员。PS:友元关系是不能被继承的。原创 2017-03-22 22:40:48 · 431 阅读 · 0 评论