<2017年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

随笔分类 -  c++

摘要:声明 本文版权归作者所有。 本文原创,转载必须在正文中显要地注明作者和出处,并保证文章(包括本声明)的完整性。 未经作者授权请勿修改(包括本声明),保留法律追究的权利。 未经作者授权请勿用于学术性引用。 未经作者授权请勿用于商业出版、商业印刷、商业引用以及其他商业用途。 一直以来觉得函数指针和函数指 阅读全文
posted @ 2018-03-02 17:33 史D芬周 阅读(1478) 评论(0) 推荐(0)
摘要:重置优先级 阅读全文
posted @ 2018-03-02 11:08 史D芬周 阅读(632) 评论(0) 推荐(0)
摘要:大小 size()是取字符串长度的,跟length()用法相同 size_t其实是一种类型,类似于无符号整形(unsignted int)。可以理解成unsignted int size,当unsignted int用就可以了。size_t b=100; sizeof(...)是运算符,其值在编译时 阅读全文
posted @ 2018-03-01 16:05 史D芬周 阅读(842) 评论(0) 推荐(0)
摘要:1: 不要使用宏,用const或enum定义常量 用inline避免函数的额外调用(使用inline的函数,块里面尽量不要使用循环和递归) 用template去荷花一些函数或者类型 用namespace去避免命名冲突 2:不要在你需要变量之前去声明它,以保证你能立即对他进行初始化 声明可以出现在所有 阅读全文
posted @ 2018-02-08 14:45 史D芬周 阅读(247) 评论(0) 推荐(0)
摘要:#include void say_hello() { std::cout << "hello world !" << std::endl; } class Hello { public: void operator () () { std::cout << "hello cpp !" << std::endl; }//重载运算符(); }; int main() {... 阅读全文
posted @ 2018-02-08 10:59 史D芬周 阅读(268) 评论(0) 推荐(0)
摘要:c++,类的对象作为形参时一定会调用复制构造函数吗?答:如果参数是引用传递,则不会调用任何构造函数;如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在,函数执行结束之后调用析构函数。如果类中没有定义复制构造函数 那对象就不能作为形参?答:如果没有定义,编 阅读全文
posted @ 2018-02-06 09:29 史D芬周 阅读(1464) 评论(0) 推荐(0)
摘要:在C++中,有三大函数复制控制(复制构造函数,赋值操作符,析构函数),而在C++11中,加入了移动构造函数,移动赋值操作符。我就斗胆将他们命名为六大函数好了。 一、构造函数 c++primer中说过:构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作就是保证每个对象的 阅读全文
posted @ 2018-02-05 16:18 史D芬周 阅读(559) 评论(0) 推荐(1)
摘要: 阅读全文
posted @ 2018-02-04 12:13 史D芬周 阅读(335) 评论(0) 推荐(0)
摘要:今天专门看了一下虚继承的东西,以前都没怎么用过,具体如下:父类: 复制代码代码如下: class CParent { .... }; 继承类的声明比较特别: class CChild : virtual public CParent { .... } 请问,这个"virtual"是什么作用及含义? 阅读全文
posted @ 2018-01-30 14:49 史D芬周 阅读(6204) 评论(0) 推荐(0)
摘要:为了实现虚函数,C ++使用了一种称为虚表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表格有时会以其他名称,如“vtable”,“虚拟功能表”,“虚拟方法表”或“调度表”。 因为了解虚拟表的工作原理并不需要使用虚拟功能,所以这部分可以被认为是可选的阅读。 阅读全文
posted @ 2018-01-29 17:02 史D芬周 阅读(928) 评论(0) 推荐(0)
摘要:面向对象中(包括C++),继承是用来描述“是一种”关系,比如说: 中国人是人类的派生类,这里就有”是一种“关系,你是中国人当然也是人了。派生类继承了基类的所有成员,派生类对象理所当然可以当做基类对象来用(相当于儿子继承了父亲所有的遗产,所以儿子可以用父亲的钱)。C++中,一般是将派生类对象传递给基类 阅读全文
posted @ 2018-01-29 15:16 史D芬周 阅读(2545) 评论(0) 推荐(0)
摘要:运算符可以作为普通函数,朋友函数或成员函数来重载。下面的经验法则可以帮助您确定哪种形式最适合于给定的情况: 如果你重载了赋值(=),下标([]),函数调用(())或成员选择( - >),那么它就是成员函数。 如果你重载一个一元运算符,那么作为一个成员函数。 如果你重载了一个修改左操作数的二元运算符( 阅读全文
posted @ 2018-01-24 13:25 史D芬周 阅读(467) 评论(0) 推荐(0)
摘要:构造函数是干什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。 构造函数的种类 下面使用上面定义的类对象来说明各个构造函数的用法: 参考:http://www.cnblogs.com/xkfz007/a 阅读全文
posted @ 2018-01-24 10:18 史D芬周 阅读(550) 评论(0) 推荐(1)
摘要:重载不能改变操作符的优先级 如果一个内建操作符是一元的,那么所有对它的重载仍是一元的。如果是二元的重载后也是二元的 下面看一个有代表性的例子:: 头文件Complex.h: #includeusing namespace std; class Complex {public: Complex(); 阅读全文
posted @ 2018-01-17 20:19 史D芬周 阅读(1228) 评论(0) 推荐(0)
摘要:1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const 阅读全文
posted @ 2018-01-17 14:20 史D芬周 阅读(2252) 评论(0) 推荐(1)
摘要:#include #include #include #include #include using namespace std; void a(int a) { cout << a << endl; }; void b(int b) { cout << a << endl; }; int main() { decltype(a) &a1=a; //函数引用,给一个declt... 阅读全文
posted @ 2018-01-07 17:36 史D芬周 阅读(668) 评论(1) 推荐(0)
摘要:L:左 R:右 阅读全文
posted @ 2018-01-07 12:48 史D芬周 阅读(268) 评论(0) 推荐(0)
摘要:单文件引用头文件./ 当前目录 ../ 父级目录 / 根目录 多文件引用头文件多文件引用头文件 定义单独放在cpp文件里面 ,声明放在().h)里面 阅读全文
posted @ 2018-01-05 13:47 史D芬周 阅读(834) 评论(0) 推荐(0)
摘要:关于浅拷贝和深拷贝这个问题遇上的次数不多,这次遇上整理一下,先说这样一个问题,关于浅拷贝的问题,先从最简单的说起。 假设存在一个结构体: ​这样可以看到的结果是: age is : 18 name is :liming 说明此时的拷贝是成功的,此时的结构体可以通过“=”来直接进行赋值操作,但是接下来 阅读全文
posted @ 2018-01-05 10:13 史D芬周 阅读(20815) 评论(2) 推荐(1)
摘要:通过class A和class B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略, 输出的结果也是我们预料中的,分别是This is A和This is B。但这是否真正做到了多态性呢?No,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。那现在就把ma 阅读全文
posted @ 2018-01-03 17:07 史D芬周 阅读(730) 评论(0) 推荐(0)