随笔分类 -  C++学习笔记

摘要:以下内容均摘自书上..仅供remark使用 条款目录: 一.让自己习惯C++ 1.视C++为一个语言联邦 2.尽量以const,enum,inline替换#define 3.尽可能用const 4.确定对象使用前已先被初始化 二.构造/析构/赋值运算 5.了解C++默默编写并调用哪些函数 6.若不想 阅读全文
posted @ 2016-04-07 17:37 Jensen抹茶喵 阅读(378) 评论(0) 推荐(0)
摘要:C++11 std::function用法 直接上代码: 例子1:std::function的感觉就像是函数指针那样有木有 上面代码同时简单介绍了“Lambda 表达式”,“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应 阅读全文
posted @ 2016-02-27 11:57 Jensen抹茶喵 阅读(636) 评论(0) 推荐(0)
摘要:今天我们来讲讲c++11中引入了两个新东西 1.move constructor(移动构造函数) 2.move assignment(移动赋值) Rule of three现在变成了Rule of five(多了上面说的两个东东) 那么新加入的移动赋值以及移动拷贝要怎么使用呢,直接看代码 Outpu 阅读全文
posted @ 2016-02-15 15:56 Jensen抹茶喵 阅读(1089) 评论(0) 推荐(0)
摘要:本文摘自http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777432.html 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory bar 阅读全文
posted @ 2016-02-02 20:45 Jensen抹茶喵 阅读(286) 评论(0) 推荐(0)
摘要:泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。 直接上代码吧: 1.模板函数 结果和想的一样,别的类型转化为string类型 2.模板类(可以用来实现很多数据结构...以及单例类什么的) 上面例子轻松的实现了一个支持迭代器的堆栈数据结构,cocos2dx也通过这样的包装来实 阅读全文
posted @ 2016-02-02 20:11 Jensen抹茶喵 阅读(271) 评论(0) 推荐(0)
摘要:1.友元函数(例子摘自网上) 友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,他和普通函数相同,即在定义上和调用上和普通函数相同。下面举一例子说明友元函数的应用。 Point类中说明了一个友元函数Distance(),他在说明时前边加friend关键字,标识他不是成员函数,而 阅读全文
posted @ 2016-01-29 18:25 Jensen抹茶喵 阅读(286) 评论(0) 推荐(0)
摘要:预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有: (1)#include 指令 该指令指示编译器将xxx.xxx文件的全部内容插入此处。若用<>括起文件则在系统的INCLUDE目录中寻找文件,若用" "括起文件则在当前目录中寻找文件。一般来说,该文 阅读全文
posted @ 2016-01-29 17:57 Jensen抹茶喵 阅读(355) 评论(0) 推荐(0)
摘要:下面直接上代码说明: 1.当sizeof一个空类(结构体): 因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。 同样空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空类的sizeof为1。(结构 阅读全文
posted @ 2016-01-29 17:47 Jensen抹茶喵 阅读(336) 评论(0) 推荐(0)
摘要:*内联函数是什么,有什么用 定义:内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。 动机:内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数。 一个小内存空间的函数非常受益。 注意:内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条 阅读全文
posted @ 2016-01-29 00:02 Jensen抹茶喵 阅读(459) 评论(0) 推荐(0)
摘要:*什么是虚继承,使用虚继承来解决什么问题,什么是虚基类 #虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。 阅读全文
posted @ 2016-01-29 00:00 Jensen抹茶喵 阅读(581) 评论(0) 推荐(0)
摘要:*什么时候发生函数覆盖(函数重写)(Override),什么时候发生函数重载(Overload),什么时候发生函数隐藏 #函数覆盖发生在父类与子类之间,其函数名、参数类型、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体不同,当派生类对象调用子类中该同名函数时会自动 阅读全文
posted @ 2016-01-28 23:58 Jensen抹茶喵 阅读(403) 评论(0) 推荐(0)
摘要:成员变量里面如果包含了引用类型,应该如何初始化此成员变量才不报错 答:需要利用类的初始化列表来构造该成员对象 这里用了两种方法初始引用类型的成员变量,一种是new(析构函数处记得释放..),一种是上层传入(注意该对象的生命周期)..注意..如果构造函数直接构造对象并把对象付给成员,构造函数结束时成员 阅读全文
posted @ 2016-01-28 23:57 Jensen抹茶喵 阅读(274) 评论(0) 推荐(0)
摘要:每个类的成员函数都默认传入this指针,成员函数后面加了const后该成员函数将不能修改该类的成员了 阅读全文
posted @ 2016-01-28 23:55 Jensen抹茶喵 阅读(446) 评论(0) 推荐(0)
摘要:当子类析构需要调用父类的析构函数,基类的析构函数必须设置为虚析构函数 阅读全文
posted @ 2016-01-28 23:54 Jensen抹茶喵 阅读(244) 评论(0) 推荐(0)
摘要:利用类的初始化列表来调用就可以了,看下面代码 阅读全文
posted @ 2016-01-28 23:53 Jensen抹茶喵 阅读(553) 评论(0) 推荐(0)
摘要:看下面代码 阅读全文
posted @ 2016-01-28 23:51 Jensen抹茶喵 阅读(557) 评论(0) 推荐(0)
摘要:*什么是赋值构造函数(重载赋值操作符) 下面的代码演示了什么是赋值构造函数,如果不人为定义赋值构造函数,系统将默认给你分配一个浅拷贝的赋值构造函数(下面例子为深拷贝的赋值操作) 结论:通常定义了拷贝构造函数,赋值操作符也要同时重载...而当需要手动写这两个函数时,析构函数大部分情况下也是必要的 阅读全文
posted @ 2016-01-28 23:47 Jensen抹茶喵 阅读(362) 评论(0) 推荐(0)
摘要:*什么是拷贝构造函数又可以叫复制构造函数(浅拷贝与深拷贝) 下面的代码演示了什么是拷贝构造函数,如果不人为定义拷贝构造函数,系统将默认给你分配一个浅拷贝的拷贝构造函数 注意:如果你的类里面包含了指针之类的对象(请记得实现深拷贝) 阅读全文
posted @ 2016-01-28 23:45 Jensen抹茶喵 阅读(405) 评论(0) 推荐(0)
摘要:本站文章均为Jensen抹茶喵原创,转载务必在明显处注明:转载自【博客园】 原文链接:http://www.cnblogs.com/JensenCat/p/4954332.html 条款一:语法分析中的“贪心法” //表达式 a---b //等价于 a-- - b //不同于 a - --b 此例子 阅读全文
posted @ 2015-11-11 02:26 Jensen抹茶喵 阅读(197) 评论(0) 推荐(0)
摘要:本站文章均为Jensen抹茶喵原创,转载务必在明显处注明:转载自【博客园】 原文链接:http://www.cnblogs.com/JensenCat/p/4770171.html 1.0版本: 这里是头文件结构的定义: 一个非字节对齐结构体_tagTest2 一个字节对齐_tagTest3 (使用 阅读全文
posted @ 2015-08-30 00:13 Jensen抹茶喵 阅读(7409) 评论(0) 推荐(0)