摘要: &&和||操作符也可以重载,但是不建议重载,因为重载时短路与和短路或都会‘失效’,即不论实际第一个表达式为true还是false,短路与和短路或后面的表达式都会继续判断,这样会导致结果和预期可能不同! 1 //对于标准数据类型直接使用&&和|| 2 //假设+操作符已经重载 3 4 Test t{ 阅读全文
posted @ 2018-12-05 08:14 zarjen 阅读(125) 评论(0) 推荐(0)
摘要: 操作符重载: 在自定义的数据类型的数据间的加减乘除操作,默认情况下编译器是不识别的,需要进行操作重载,格式如operator+(param); 但是并不是所有的运算符都是可以重载或有必要重载的! 重载规则: 实例代码: 1 #define _CRT_SECURE_NO_WARNINGS 2 #inc 阅读全文
posted @ 2018-12-04 13:56 zarjen 阅读(227) 评论(0) 推荐(0)
摘要: 友元,用friend关键字修饰。 友元函数: 友元函数的目的是,让函数对象类型的参数可以直接访问该对象的私有成员!避免了出现不断调用该函数时通过get函数获取私有成员引起的压栈出栈问题! 在需要定义为友元函数的函数前加friend关键字,且在需要直接访问私有成员的那个类中声明函数即可; 同类对象间无 阅读全文
posted @ 2018-12-03 22:51 zarjen 阅读(194) 评论(0) 推荐(0)
摘要: this指针,指向当前对象; 本质上是一个常指针,Test *const this,地址不能修改,指向的内容可以修改; 要想保证this指针指向的内容也不可以被修改,需要在成员函数尾部加const,代表修饰this指针,即const Test *const this; static成员函数只能返回s 阅读全文
posted @ 2018-12-03 16:26 zarjen 阅读(156) 评论(0) 推荐(0)
摘要: static变量和函数 静态成员变量不在对象的内存区,在静态区,所以sizeof()时计算不包含静态变量的大小; 类中的函数也不在对象中。 练习: 阅读全文
posted @ 2018-12-02 22:15 zarjen 阅读(492) 评论(0) 推荐(0)
摘要: C++中new和delete是运算符,不是函数,执行效率高。 C语言中malloc()和free()是函数,标准库stdlib.h中。 new会在堆上初始化一个对象时会触发对象的构造函数,malloc不能。 delete会触发对象的析构函数,free不能。 delete释放的是对象的空间,析构函数释 阅读全文
posted @ 2018-12-02 17:04 zarjen 阅读(292) 评论(0) 推荐(0)
摘要: 构造函数参数初始化列表 当类中的成员包含对象时,在定义构造函数初始化成员需要使用初始化列表将对象成员初始化,如下段代码中的m_a1和m_a2; 构造对象成员的顺序与初始化的顺序无关,与对象成员的定义顺序有关; 如果类的成员中包含常量,如const int m_c,那么构造函数初始化参数时必须使用初始 阅读全文
posted @ 2018-12-02 16:18 zarjen 阅读(315) 评论(0) 推荐(0)
摘要: 1、浅拷贝 实例代码如 1 #define _CRT_SECURE_NO_WARNING 2 #include <iostream> 3 #include<cstdlib> 4 上面代码运行会报错,原因是,浅拷贝中t2的char *name与t1的指向同一个堆中地址,(后构造的先析构)当t2调用完毕 阅读全文
posted @ 2018-12-01 21:27 zarjen 阅读(161) 评论(0) 推荐(0)
摘要: 1、构造函数和析构函数 2、拷贝构造函数 3、 应用场景 对象作为形参,传值时也是调用拷贝构造函数,下图中,当调用func(t1)时,实际上是Test t = t1,这是一个拷贝构造函数调用。 3.1 如果函数返回值是用一个对象接收的,那么会发生一个值拷贝,通过拷贝构造函数创建一个匿名对象。如下有函 阅读全文
posted @ 2018-12-01 20:27 zarjen 阅读(1479) 评论(0) 推荐(0)
摘要: 内联函数,关键字inline,放在函数最前面修饰。 宏函数,预处理器处理,进行简单的文本替换,没有任何编译过程。 阅读全文
posted @ 2018-11-29 22:26 zarjen 阅读(621) 评论(0) 推荐(0)