摘要: 移动语义--std::move编译器只对右值引用才能调用转移构造函数和转移赋值函数,而所有命名对象都只能是左值引用,如果已知一个命名对象不再被使用而想对它调用转移构造函数和转移赋值函数,也就是把一个左值引用当做右值引用来使用,怎么做呢?标准库提供了函数 std::move,这个函数以非常简单的方式将... 阅读全文
posted @ 2015-07-22 21:33 Jianhui_Ethan 阅读(1662) 评论(0) 推荐(0) 编辑
摘要: 一、缘起C++ 语言没有自动内存回收机制,每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete;异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std:... 阅读全文
posted @ 2015-07-22 21:16 Jianhui_Ethan 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 昨日面试被组考官问及const与define异同,开始还简单,后来被问的我脑袋是一团浆糊.今日差点资料总结一下1. const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的... 阅读全文
posted @ 2015-07-22 21:12 Jianhui_Ethan 阅读(257) 评论(0) 推荐(0) 编辑
摘要: c/c++强制类型转换Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换... 阅读全文
posted @ 2015-07-22 20:55 Jianhui_Ethan 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 P... 阅读全文
posted @ 2015-07-22 11:10 Jianhui_Ethan 阅读(218) 评论(0) 推荐(0) 编辑