摘要: 在c++中,起用,struct和class,主要是看看成员默认是public 还是 private。除此之外,struct兼容了c以来的struct。主要是承载数据用,也就是数据结构。 阅读全文
posted @ 2013-09-26 11:07 木神 阅读(165) 评论(0) 推荐(0) 编辑
摘要: C++11: 变参模板和std::tuple变参模板Variadic Templates变参模板(Variadic Templates)顾名思义就是参数类型和个数可以改变的模板。12345678910111213141516//定义templateclass VariadicTemplate;//实例化的方法VariadicTemplate instance;VariadicTemplate instance;VariadicTemplate, std::string, std::string, std::vector> instance;//参数个数甚至可以为0VariadicTemp 阅读全文
posted @ 2013-09-22 09:56 木神 阅读(2279) 评论(0) 推荐(0) 编辑
摘要: 模板提要:模板的形参关键字,在c++前必须加上前缀class,为了区别关键字class,也可以用typename来替代。类模板的定义形式为:类模板名对象名;函数模板,后面可以直接调用,像平常函数一样。获取变长模板的长度:sizeof...(Args)#includetemplatestruct count{ static const int value = 1 + count::value; static void f(){printf("%d\n",sizeof...(Args))};};templatestruct count{ static const int val 阅读全文
posted @ 2013-09-22 09:28 木神 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 枚举类——具有类域和强类型的枚举强类型枚举由关键字enum class标识。它不会将枚举常量暴露到外层作用域中,也不会隐式转换为整形,并且拥有用户指定的特定类型(传统枚举也增加了这个性质)。枚举类(“新的枚举”,“强类型的枚举”)主要用来解决传统的C++枚举的三个问题:可转换的枚举类型默认被转换为int类型,在那些不需要枚举类型表现为int类型的情况下,这可能会导致错误发生可转换的枚举会使得它的所有枚举值在其周围的代码范围内都是可见的,则可能会导致名字冲突不可以指定枚举的底层数据类型,这可能会导致代码不容易理解,兼容性问题并且不可以进行前向声明枚举类(enum)(“强类型枚举”)是强类型的,并 阅读全文
posted @ 2013-09-22 09:01 木神 阅读(415) 评论(0) 推荐(0) 编辑
摘要: C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。 4种类型转换的格式,如: TYPE B = static_cast(a)const_cast 去掉类型的const或volatile属性。 struct SA { int i; }; const SA ... 阅读全文
posted @ 2013-09-22 08:47 木神 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 异常处理如果仅仅用于异常处理,那么还真是暴殄天物,木神认为,c++异常处理应该与switch放在同一等级层次,看待。三、异常出现之前处理错误的方式 在C语言的世界中,对错误的处理总是围绕着两种方法:一是使用整型的返回值标识错误;二是使用errno宏(可以简单的理解为一个全局整型变量)去记录错误。当然C++中仍然是可以用这两种方法的。 这两种方法最大的缺陷就是会出现不一致问题。例如有些函数返回1表示成功,返回0表示出错;而有些函数返回0表示成功,返回非0表示出错。 还有一个缺点就是函数的返回值只有一个,你通过函数的返回值表示错误代码,那么函数就不能返回其他的值。当然,你也可以通过指针或者C++的 阅读全文
posted @ 2013-09-19 17:34 木神 阅读(249) 评论(0) 推荐(0) 编辑
摘要: http://www.360doc.com/content/13/0509/14/9200790_284125085.shtml 阅读全文
posted @ 2013-09-19 17:19 木神 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 常对象常对象常量是一个在程序执行过程中值不能改变的量。C++中的关键字CONST可以加到对象的声明中使该对象成为一个常量而不被改变。使用CONST说明的成员函数,称为常成员函数。只有常成员函数才有权使用常量或常对象,没有使用的CONST说明的成员不能使用常对象。#include "iostream.h"class point{private: int x,y;public: point(int xx=0,int yy=0) { x=xx; y=yy; } void display()const { cout<<x<<"const" 阅读全文
posted @ 2013-09-19 17:06 木神 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 静态对象,与数据共享。静态对象无非也是一种静态变量!它的作用域只在当前的源文件中有效,而不能在其他源文件中使用。静态变量的出现就是为了解决在不用的源文件中需要使用名字相同的变量。#include using namespace std;class A {public: void f() {coutusing namespace std;class A{public: static A *a; void f() {coutf(); return 0;}输出和上面一样。静态对象和静态成员变量的作用域是一样的,参考静态成员变量。静态对象的妙用就是使所有数据都变成静态。就... 阅读全文
posted @ 2013-09-19 17:01 木神 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 什么是代码,什么是数据。代码是能够处理其他数据的数据,而数据是储存信息的数据。数据有时能够变成代码,代码也可以变成数据。甚至,一段数据中某一段,都可以单独拿出来,通过执行器执行(执行器,比如exe的执行器windows,js的执行器浏览器等)。 阅读全文
posted @ 2013-06-16 21:34 木神 阅读(2654) 评论(1) 推荐(0) 编辑