![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
ArospaceBoy
航空工作者
展开
-
构造函数
应该使所有的单参数构造函数为explicit的,以免后台类型转换。一个检查但不改变其对象状态的成员函数叫做访问函数,而改变状态的函数叫做修改函数。修改函数不能用于常对象上,默认情况下,所有的成员函数都是修改函数,要使得成员函数成为访问函数,则必须在终止参数类型表列的封闭圆括号上加上关键字const。...原创 2019-01-11 16:39:57 · 92 阅读 · 0 评论 -
const在函数前、函数后的区别
一、const基础如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:int b = 500;const int * a = &b; [1]int const a = &b; [2]int const a = &b; [3...转载 2019-04-28 13:26:36 · 1700 阅读 · 0 评论 -
const限定符(二)
顶层const表示指针本身是个常量,底层const表示指针所指的对象是一个常量。更一般的,顶层const可以表示任意的对象是常量,底层const则与指针和引用等复合类型的基本类型部分有关。用于声明引用的const都是底层const。当执行对象的拷贝操作时,常量是顶层const还是底层const区别明显。其中顶层const不受什么影响;对于底层const来说,当执行对象的拷贝操作时,拷入和拷出...原创 2019-01-09 21:26:24 · 130 阅读 · 0 评论 -
const限定符(一)
const对象创建后必须初始化,初始值可以是任意复杂的表达式,可以在运行时、编译时初始化。默认状态下,construction对象仅在文件内有效,当多个文件出现同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。若一种const变量,它的初始值不是一个常量表达式,但又确实有必要在文件间共享,则需要对于const变量不管是声明还是定义都添加extern关键字,这样只需要定义一次...原创 2019-01-09 20:37:08 · 246 阅读 · 0 评论 -
matrix类
#ifndef MATRIX_H#define MATRIX_H#include <vector>using namespace std;template <typename Object>class matrix{public:matrix(int rows,int cols):arry(rows){for(auto & thisRow:arr...原创 2019-01-14 16:34:55 · 417 阅读 · 0 评论 -
C++类模板
在C++的Template中很多地方都用到了typename与class这两个关键字,有时候这两者可以替换,那么这两个关键字是否完全一样呢?事实上class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符...原创 2019-01-14 11:36:02 · 115 阅读 · 0 评论 -
C++五大函数
析构函数:释放掉在对象使用期间获得的资源,包括关于任意的new操作调用对应的delete,关闭任何打开的文件,等等。拷贝构造函数和移动构造函数:构造一个新的对象,被初始化为与另一个同样类型对象相同的状态。如果这个已存在的对象是一个左值,那么就用拷贝构造函数;而如果这个已存在的对象是一个右值,那么就用移动构造函数。在以下实例中将调用拷贝构造函数或移动构造函数(1)带初始化的声明(2)使用传值调用...原创 2019-01-12 16:23:00 · 1490 阅读 · 0 评论 -
std::swap和std::move
在C++11中,如果赋值运算符的右边是一个右值,那么当对象支持移动操作时我们能够自动地避免复制。如果对象有名字,那么它就是一个左值。void swap(double & x,double & y){double tmp=x;x=y;y=tmp;}void swap(vector& x,vector& y){vector tmp=x;x=y;y...原创 2019-01-12 15:25:44 · 1035 阅读 · 0 评论 -
C++细节
对于内存漏洞的问题,有一个原则是在能够使用自动变量的时候不要使用new操作符。一个左值是一个标识非临时性对象的表达式,一个右值是一个标识临时性对象的表达式,或者是一个不与任何对象相互联系的值。...原创 2019-01-12 11:39:07 · 115 阅读 · 0 评论 -
C++杂谈
在编译一个文件的过程中存在着一个接口可能被读两次的危险,为防止发生,当类接口被读入时每个头文件都要使用预处理程序定义一个符号。接口文件的第一行检测这个符号是否是未定义的,如果是,就可以处理该文件,否则,不对文件进行处理,直接跳刀#endif。内置数组不能用等号来复制,内置的 字符串就是一个字符数组,==不能正确的比较两个内置字符串。范围for循环目前只允许对项的查看。...原创 2019-01-11 20:56:12 · 124 阅读 · 1 评论 -
C++之数据成员初始化
类数据成员的初始化,这份工作主要是构造函数负责的,构造函数的职责之一就是对数据成员进行正确初始化。实际上,构造函数的执行过程主要有两个阶段: (1)初始化阶段 (2)普通计算阶段 初始化阶段是指对数据成员的初始化主要在构造函数的初始化列表中进行。普通计算阶段是指对数据成员的初始化是在构造函数的函数体中进行。因此,初始化阶段与普通计算阶段是两个不同的概念,需要予以区分...转载 2019-05-16 13:24:33 · 2748 阅读 · 0 评论