C++
SPACEWHALE
这个作者很懒,什么都没留下…
展开
-
构造函数
C++中const修饰符的作用 <1> 常量 <2> 常量引用指对常量的引用(reference to const) <3> 常量指针(const pointer)与指向常量的指针(pointer to const) <4> 常量成员函数深入理解构造函数构造函数的定义:A constructor is a special kind of class member function that原创 2016-11-13 21:36:45 · 356 阅读 · 0 评论 -
函数对象
函数指针显得危险,笨拙而且过时。 函数对象function object是常规的类对象,函数对象类型重载函数调用操作符(),来创建类似于函数指针的东西。 函数对象的两个优点: 1)函数对象可以封装数据; 2)函数对象可以通过虚拟成员表现出动态行为原创 2016-09-30 18:18:38 · 249 阅读 · 0 评论 -
常量成员函数
类的非常量成员函数,this指针的类型是 C *const. 也就是顶层指针,其本身是个常量,指向的内容可变。 set()成员函数必须是非常量的。类的常量成员函数, this指针的类型是const C *const. 既是顶层指针,又是底层指针,新增加的功能是:指向的类对象不可修改.对象的逻辑状态: 对象的物理状态:原创 2016-09-30 21:35:37 · 275 阅读 · 0 评论 -
重载(overload),重写(override),隐藏(hiding)
重载overload:同一个作用域内的多个函数名字相同,但签名不同,就会发生重载。 签名(signature):由parameter的number和type构成 编译器compiler在一个作用域的可用候选函数中选择其形参parameter与函数调用中的实参argument有着最佳匹配的哪一个函数,此即重载! 重写override:派生类函数和基类虚函数具有相同的函数名和签名时,就会发生重写原创 2016-09-30 21:41:11 · 297 阅读 · 0 评论 -
构造函数不能虚,多态基类析构函数应为虚
由于派生类和基类之间的关系是一种IS-A的关系,所以通常用基类指针或引用指向派生类对象。 为了构造对象,constructor必须要事先知道对象的确切类型,所以constructor不能为virtual.构造函数是用来干嘛的?对于基类(when base is instantiated):分配一块内存调用构造函数初始化列表初始化变量执行构造函数函数体部分控制权返回至调用者对于派生类(w原创 2016-10-02 18:07:43 · 460 阅读 · 0 评论 -
C++悄悄为类做的事
//C++悄悄做的事有Big Three://一个或多个构造函数//一个析构函数//一个拷贝赋值运算符class Empty{};class Empty {public: Empty(); Empty(const Empty&) ~Empty(); Empty& operator=(const Empty& rhs);};需要注意的是,编译器版本的拷贝构原创 2016-11-13 14:30:27 · 179 阅读 · 0 评论 -
减少临时对象,代码运行地再快些
临时对象不可避免,但是可以减少。尽可能地减少临时对象的产生,就是尽可能地减少临时对象所带来的性能损耗。临时对象产生的主要情形: <1> 参数 比如:函数的入口参数设置成list l, string name之类的 避免方法:采用传常量引用或者指针取代传值。 传值传递方式下,在调用过程中,会根据具体的实参来生成对应的拷贝,也就是临时对象,并传入函数以供使用。<2> 后缀 在后缀重载实现中,原创 2016-11-13 15:28:46 · 237 阅读 · 0 评论 -
malloc/free与new/delete
先说C语言里面的malloc/free 1. 使用malloc和free需要包含stdlib.h,这表明malloc和free是标准库函数; 2. malloc的返回类型是void*,,需要进行强制转型 3. malloc若失败了,返回的是NULL,所以才有了要在malloc之后判断其返回值是否为NULL的建议; 4. malloc仅仅实现了内存分配与释放;再说说new/delete 1.原创 2016-10-02 16:50:01 · 356 阅读 · 0 评论 -
多态是怎么实现的?
VB语言支持类,但它不支持多态,所以VB是一个基于对象而非面向对象的语言。 多态性:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。要理解多态,首先要了解程序的执行过程: 1. 源程序通过编译生成可执行文件时,是放在外存中的,程序中的变量和函数只有逻辑地址。 2. 程序运行时,程序从外存加载到内存,为程序中的变量和函数分配物理内存单元,使其具备物理地址。物理地址与变量民、函数名原创 2016-10-31 20:26:12 · 6508 阅读 · 0 评论 -
动态申请二维数组
Q:如何动态申请二维数组, A:先申请行(宏观上),再申请列(次级),释放时按照相反的顺序。 具体有如下4种方式: 方法1. malloc() 方法2. new 方法3. vector 方法4. vector 注意,前方高能! 不知道大家注意到没有,以上的方法申请的二维动态数组每一行不是连续的,有点类似于“链地址”的感觉,那么如何申请地址连续的二维数组呢?下面不一一详解了,以new为原创 2016-09-30 17:59:16 · 301 阅读 · 0 评论 -
C++中的内存管理
首先我们需要对概念有深刻的理解,什么是对象?什么又是变量呢?对象是存放某类型值的内存空间,类型(分为内置类型和用户自定义类型比如类、枚举)定义了一组可能的值以及一组(对象上的)操作,值是一组二进制位;变量则是一个命名的对象。...原创 2018-06-30 12:22:21 · 184 阅读 · 0 评论