![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
killer__
这个作者很懒,什么都没留下…
展开
-
C++析构、拷贝、赋值函数的一个知识点
看书看到这,感觉耳目一新,记录一波。众所周知,C++的类如果没有默认构造函数,会自动生成一个。同理,如果没有复制构造函数即A::A(const A&){}这个函数 ,则系统也会自动生成一个,但这个自动生成的复制构造函数不一定满足我们的要求。比如下面的例子:class A{ public: int* a; int b; A()=default; ...原创 2020-02-03 23:55:40 · 174 阅读 · 0 评论 -
C++四种初始化方式
1.默认初始化如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。int i;A a;2.直接初始化如果不使用等号,则执行的是直接初始化。int a(0);string str1(“hello”);string str2(10, ‘c’);//这种情况拷贝初始化不能完成A a(pa);3.拷贝初始化如果使用一个等号初始化一个变量,实际上执行的是拷贝初始...转载 2020-01-27 01:27:03 · 4248 阅读 · 0 评论 -
STL关联容器总结
有序的都不带unordered,即如下:set multiset map multimap其中带multi的表示关键字可以重复无序的带unordered,如下:unordered_mapunordered_setunordered_multimapunordered_multisetmap系有KEY和VALUE,set系只有KEY没有VALUE4个有序容器的KEY必须重载<...原创 2020-01-26 10:55:39 · 229 阅读 · 0 评论 -
C++泛型算法总结
1accumulate(b,e,T) 累和(基础和为T)注意T的类型必须和序列中元素类型相同,如double序列后面的T就必须是0.0,如果是0就会把序列中的数当成int进行求和2count(b,e,T) 计数,查找[b,e)中T出现的次数3equal(b1,e1,b2) 确定是否相同,[b1,e1)为序列1,b2为序列2开头默认b2序列长度比b1到e1要长4fill(b,e,...原创 2020-01-20 23:00:21 · 166 阅读 · 0 评论 -
STL顺序容器用法自我总结
顺序容器类型:vector、deque、list、forward_list、string、array。queue(单向队列)底层也是用deque(双端队列)实现的a.swap(b);swap(a,b);可以交换两个容器的数据结构初始化:声明时定义.assign(n,t),以n个t初始化.assign(b,e),用迭代器b到e初始化.assign(il),用il表示的数据初始化添...原创 2020-01-19 15:45:32 · 206 阅读 · 0 评论 -
指针常量与字符串常量的冲突
看程序员面试笔记看到一段代码,记录一下:int main(){ char* const str="apple"; *str="orange"; cout<<str<<endl; getchar();}这段代码有两个问题:1.str是char类型,要给str赋值要写str=“orange”;2.如果只把str前的号去掉,程序还是不对的。str是常量指针,开...原创 2019-12-10 20:26:43 · 204 阅读 · 0 评论 -
C++记录(二)
1.算术移位和逻辑移位。逻辑移位是只补0,算术移位是看符号,负数补1,正数补0(讨论的是右移的情况下)。负数一般不左移,无实际意义,如果遇到位运算的相关题目需要对int变量进行左移而且不知道正负,那么先强制类型准换为unsigned再进行移位操作。2.constexpr意义是字面值常量,即在编译期就可以将其计算出结果。constexpr修饰函数名是高速编译器放心大胆的将该函数计算出结果(要...原创 2019-11-04 20:18:45 · 194 阅读 · 0 评论 -
C++子类虚函数表指针
最近看剑指offer,记录一下#include <iostream>#include <string>#include <cctype>#include<vector>#include<list>#include<cstring>#include<typeinfo>#include<set&g...原创 2019-10-28 10:54:32 · 366 阅读 · 0 评论 -
唠唠C++二级指针、二维数组、指针数组、数组指针等的区分
今天看c++primer第六章,有这部分的内容,脑子有点糊涂了,看了几篇博客,自己敲了下,记录一下备忘。二级指针:int **p;二维数组:int p[10][10];char q[10][10];指针数组:int *p[10];数组指针:int (*p)[10];咋区分后面这俩呢,记住[]的优先级比*高,所以上面写法,p先和后面的[10]结合,也就是p首先是个10个元...原创 2019-10-22 00:32:30 · 276 阅读 · 0 评论 -
for语句处理多维数组
看C++Primer第三章看到的,记录一下。下面这段代码非法,因为row指向的是每一行的一个大小为10的一维数组,默认转为指针,即row其实是一个int*类型的指针,显然内层循环就出错了int arr[10][10];for(auto row:arr){ for(auto col:row) { cout<<col; }}正确写法:外层for利用引用,row是一个...原创 2019-10-03 00:04:06 · 284 阅读 · 0 评论 -
关于C++指针、引用和const关键字的各种关系
#include <stdio.h>#include<iostream>using namespace std;typedef char *new_type;int main(){ //指针是对象,若本身不是常量,是可以随便改变的,分为常量指针和指向常量的指针两种 const char c=97; const char *p1=&c; //这里相当...原创 2019-09-28 01:06:34 · 130 阅读 · 0 评论 -
C++记录(一)
1extern 符表示该变量不是当前作用域定义的,用于声明。如extern i;表示i不是当前作用域里的,是其他某个include的cpp文件里的变量。2int *p=0;相当于初始化p为空指针。3指针是对象,引用不是对象。所以可以取指针的指针或者指针的引用,但不可以取引用的指针。指针一定要指向对象。4const int x=1;const int *p=&x; //p...原创 2019-09-28 01:04:06 · 344 阅读 · 0 评论