C++学习笔记8_零碎的知识
1.
int main(void)
{
int arr[] = {1,2,3,4};
//数组的长度
int len = sizeof(arr)/sizeof(int);
//由此可以看出,sizeof(数组名),是可以知道整个数组所占的内存多大
//arr是属于int *类
}
2. int* A类,A能A[0],A[1]...这样子用,因为可以int *A =new int[10];
3. 防止头文件重复包含
(头文件是在源文件中直接展开的)
方法一:
#ifndef 自定义的串
#define 自定义的串
//头文件的内容
#endif
方法二:
#pragma once
//头文件内容
4.对右值取引用
void fun(int &a);
void fun2(int && a);//&&符号,是对“右值”取引用, a=100;100是右值,应该是一个匿名的临时变量
int main()
{
int a=1;
func(a);//这样将a本身传入去
func(100);//这样就不行,因为100不是引用
fun2(100);//这样就可以
}
5. C++类型转换
Type b =(Type)a;//没有类型检查
static_cast 对基本数据类型进行检查,转换有继承关系的指针和引用
int main()
{
int a =10;
char c =static_cast<char>(a);
}
class A;
class B;
class Aplus :public A;
int main()
{
int *p=NULL;
char* cp =static_cast<char*>(p);//报错,不能转
Aplus * ap =NULL;
A* a = NULL;
B *b = statiic_cast<B*>(ap);//没有继承关系,不能通过
A *a = static_cast<A*>(ap);//子转父, 可以通过
Aplus * ap_=static_cast<Aplus*>(a);/父转子,也可以通过
}
int main()
{
Aplus aptemp;
Aplus & ap =aptemp;
A atemp=atemp;
A& a = atemp;
A&a = static_cast<A&>(ap);//子转父, 可以通过
Aplus & ap_=static_cast<Aplus&>(a);/父转子,也可以通过
}
dynamic_cast 检查具有继续关系的指针或引用,在转换前,会进行对象类型检查
int main()
{
int a = 10;
char c = dynamic_cast<char>(a);//不能转换简单的类型。
A *a=NULL;
B * b = dynamic_cast<B*>(a);//报错
Aplus *ap=dynamic_cast<Aplus *>(a);//父转子,报错。
a =dynamic_cast<a*>(ap);//子转父,通过
}
const_cast,用于(指针,引用,或对象指针)去除指针或引用取消const属性。
void main()
{
int a=10;
const int &b=a;//不能通过b修改a
int & c= const_cast<int &>(b);
c=20;//此时,a应该变为20了。但是应该还是不能通过b来改A
}
reinterpret_cast 超强制指针转换,任何指针都可以转任何指针(包括函数指针)
6. 对组pair
int main()
{
pair<int,int> pair1(10,20);
cout<<pair1.first<<pair1.sercond<<endl;
pair<int,stirng> pair2(1,"aaa");
pair<int,string> pair3=pair2;//拷贝
}
C++学习笔记8_零碎的知识的更多相关文章
- IP地址和子网划分学习笔记之《预备知识:进制计数》
一.序:IP地址和子网划分学习笔记开篇 只要记住你的名字,不管你在世界的哪个地方,我一定会去见你.——新海诚 电影<你的名字> 在我们的日常生活中,每个人的名字对应一个唯一的身(敏)份(感 ...
- tensorflow学习笔记(3)前置数学知识
tensorflow学习笔记(3)前置数学知识 首先是神经元的模型 接下来是激励函数 神经网络的复杂度计算 层数:隐藏层+输出层 总参数=总的w+b 下图为2层 如下图 w为3*4+4个 b为4* ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- java学习之路--零碎的知识笔记
java运算符: 自增自减运算符: int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4 前缀自增自减法(++a,--a): 先进行自增或者自减运算,再 ...
- Python学习笔记_零碎知识
1. 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言.静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错. 2. Python有两种除法: /除法计算结果是浮点数, ...
- https学习笔记二----基础密码学知识和python pycrypto库的介绍使用
在更详细的学习HTTPS之前,我也觉得很有必要学习下HTTPS经常用到的加密编码技术的背景知识.密码学是对报文进行编解码的机制和技巧.可以用来加密数据,比如数据加密常用的AES/ECB/PKCS5Pa ...
- 学习笔记:delphi多线程知识
最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处. Delphi的线程同步方法: ...
- 《Python基础教程(第二版)》学习笔记 -> 第一章 基础知识
写笔记的原因:书也看了一遍,视频也看了,但总是感觉效果不好,一段时间忘记了,再看又觉得有心无力,都是PDF的书籍,打开了就没有心情了,上班一天了,回家看这些东西,真的没多大精力了,所以,我觉得还是把p ...
- 【 学习笔记 】memcached基础知识
源地址:http://kb.cnblogs.com/page/42731/ 仔细学习了下,以下是记录的笔记备忘内容. 一.memcached是什么? memcached是高性能的分布式内存缓存服 ...
随机推荐
- 多线程基础(主要内容转载于https://segmentfault.com/a/1190000014428190)
进程作为资源分配的基本单位 线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程:一条执行路径,多线程:多条执行路径).是程序使用CPU的最基本单位. 线程有3个基本状态: 执行.就绪.阻塞 ...
- Flutter中TabBarView切换状态保存
TabBarView 类似于Android中的viewPager,但是默认是没有实现切换分页状态保存的.估计是出于节约内存的原因吧. 发现这个问题的时候,搜索了一下全网.大致就两种解决方案,1是修改源 ...
- 人生,还没困难到"非死不可"
最近半个月,美国著名的Facebook公司,出了好几件大事.第一件事,2019年9月19日,一名陈姓中国软件工程师在Facebook加州总部跳楼自杀.第二件事,2019年10月4日,一名软件工程师在座 ...
- VGG(2014),3x3卷积的胜利
目录 写在前面 网络结构 multi-scale training and testing 其他有意思的点 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 VGG(2 ...
- deferred对象和promise对象(二)---deferred对象
早上醒来,继续讨论deferred对象和primise对象. deferred对象的的方法: 1.$.Deferred()-----生成一个deferred对象 2.deferred.done()-- ...
- Spring bean的作用域以及生命周期
一.request与session的区别 request简介 request范围较小一些,只是一个请求. request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请 ...
- Python 3.8.0 正式版发布,新特性初体验
北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PEP 572: Assignment Expressi ...
- Kubernetes网络分析之Flannel
Flannel是cereos开源的CNI网络插件,下图flannel官网提供的一个数据包经过封包.传输以及拆包的示意图,从这个图片中可以看出两台机器的docker0分别处于不同的段:10.1.20.1 ...
- 我眼中的如何成为一名合格的PHP高级开发工程师
转眼间搞PHP已超过10年准确的说12年,混在帝都,也经历过大公司小公司,有个同行朋友问我,我就思考下,如何成为一名合格的PHP高级开发 所有的所有仅限综合知识,因为PHP其实内容也很多,有的人专门研 ...
- 超炫酷的 IntelliJ IDEA 插件(一)
工善其事必先利器 打开setting文件选择Plugins选项 Ctrl + Alt + S File -> Setting 我的idea是最新版本2019.02 有的和别人界面可能不一样 主界 ...