首先我们知道~ return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。 return this返回当前对象的地址(指向当前对象的指针) 我们再来看看返回拷贝那个的地址~ 由运行结果得知会报下列错误!!! cpp [Error] tak ...
分类:
编程语言 时间:
2019-10-21 16:13:16
阅读次数:
108
1. 传值、传引用、传指针 以上非常基础的东西。不必再强调。下面说说常见的这种形式: 参考链接 字符常量:2,'c',true。注意不是字符串常量; 临时对象:std::string("shina"); 包括函数返回值、表达式结果; 将亡值:将要被移动的对象(C++11新增的)。 拓展:forwar ...
分类:
其他好文 时间:
2019-10-17 01:09:47
阅读次数:
173
Special Member Functions 区别于定义类的行为的普通成员函数,类内有一类特殊的成员函数,它们负责类的 构造 、 拷贝 、 移动 、 销毁 。 构造函数 构造函数控制对象的初始化过程,具体来说,就是初始化对象的数据成员。构造函数的名字与类名相同,且没有返回值。构造函数也可以有 重 ...
分类:
编程语言 时间:
2019-09-19 13:55:55
阅读次数:
96
先看代码(不想看代码可以直接看代码后的问题描述) 这是一个字符串类,问题出现在了两个符号重载,()和= ()重载是想对字符串对象做一个切片,返回一个临时对象,=重载就不用说了,就是赋值。 问题就出现在总是无法将这个切片后的临时对象赋值给等号前的对象,编译后如下: 在网上一番查找后找到一个类似问题 h ...
分类:
编程语言 时间:
2019-09-10 18:10:58
阅读次数:
178
需要注意的问题(当数据成员函数指针型变量,需要申请空间赋值时) 1.构造函数 ①需要给空指针申请一个‘\0’的空间 2.拷贝构造函数 ①传入的参数,必须引用传递否则会出现无休止的拷贝构造 ②对其参数值不做修改,传入的参数需要加const ③避免浅拷贝的产生,每次拷贝构造,都重新申请空间赋值。 3.赋 ...
分类:
其他好文 时间:
2019-08-19 20:48:27
阅读次数:
89
内存泄漏和内存溢出的关系 内存泄露:指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。 内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误。内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java对象的情况。 ...
分类:
其他好文 时间:
2019-08-19 13:08:42
阅读次数:
92
1. OOM && SOF OutOfMemoryError异常: 除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM)异常的可能, 内存泄露:指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。 内 ...
分类:
其他好文 时间:
2019-08-14 14:19:23
阅读次数:
129
一. 左值和右值 (一)概述 1. 左值是一般指表达式结束后依然存在的持久化对象。右值指表达式结束时就不再存在的临时对象。便捷的判断方法:能对表达式取地址、有名字的对象为左值。反之,不能取地址、匿名的对象为右值。 2. C++ 表达式(运算符带上其操作数、字面量、变量名等)可按照两种独立的属性:类型 ...
分类:
其他好文 时间:
2019-08-06 14:00:37
阅读次数:
84
c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。 左值、右值 C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。 ...
分类:
移动开发 时间:
2019-07-28 17:57:02
阅读次数:
143