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_零碎的知识的更多相关文章

  1. IP地址和子网划分学习笔记之《预备知识:进制计数》

    一.序:IP地址和子网划分学习笔记开篇 只要记住你的名字,不管你在世界的哪个地方,我一定会去见你.——新海诚 电影<你的名字> 在我们的日常生活中,每个人的名字对应一个唯一的身(敏)份(感 ...

  2. tensorflow学习笔记(3)前置数学知识

    tensorflow学习笔记(3)前置数学知识 首先是神经元的模型 接下来是激励函数 神经网络的复杂度计算 层数:隐藏层+输出层 总参数=总的w+b 下图为2层 如下图 w为3*4+4个   b为4* ...

  3. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  4. java学习之路--零碎的知识笔记

    java运算符: 自增自减运算符: int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4 前缀自增自减法(++a,--a): 先进行自增或者自减运算,再 ...

  5. Python学习笔记_零碎知识

    1. 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言.静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错. 2. Python有两种除法: /除法计算结果是浮点数, ...

  6. https学习笔记二----基础密码学知识和python pycrypto库的介绍使用

    在更详细的学习HTTPS之前,我也觉得很有必要学习下HTTPS经常用到的加密编码技术的背景知识.密码学是对报文进行编解码的机制和技巧.可以用来加密数据,比如数据加密常用的AES/ECB/PKCS5Pa ...

  7. 学习笔记:delphi多线程知识

    最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处. Delphi的线程同步方法: ...

  8. 《Python基础教程(第二版)》学习笔记 -> 第一章 基础知识

    写笔记的原因:书也看了一遍,视频也看了,但总是感觉效果不好,一段时间忘记了,再看又觉得有心无力,都是PDF的书籍,打开了就没有心情了,上班一天了,回家看这些东西,真的没多大精力了,所以,我觉得还是把p ...

  9. 【 学习笔记 】memcached基础知识

    源地址:http://kb.cnblogs.com/page/42731/ 仔细学习了下,以下是记录的笔记备忘内容. 一.memcached是什么?    memcached是高性能的分布式内存缓存服 ...

随机推荐

  1. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  2. 彻底理解CORS跨域原理

    背景 现在的前端开发中都是前后端分离的开发模式,数据的获取并非同源,所以跨域的问题在我们日常开发中特别常见.其实这种资料网上也是一搜一大堆,但是都不够全面,理解起来也不够透彻.这篇文章就结合具体的示例 ...

  3. 使用 Docker 让部署 Django 项目更加轻松

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 之前一系列繁琐的部署步骤让我们感到痛苦.这些痛苦包括: 要去服务器上执行 n 条命令 ...

  4. Java匹马行天下之教你用学汉语式方法学编程语言

    Java匹马行天下之教你用学汉语式方法学编程语言 前言: 前段时间接连更新了带小白从入门到了解的几篇博客: <Java匹马行天下之编程常识知多少> <Java匹马行天下之走进编程的殿 ...

  5. C# 读取控制台的Console.Write

    一个程序去调用另一个xxx.exe的时候,需要记录下这个exe里面的console.write的输出 public static string InvokeExcute(string Command) ...

  6. 队列 & 栈---概述

    队列 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作 ...

  7. MakaJs:基于 React, Redux 的轻量级前端框架

    github: maka.js 留下您宝贵的STAR!谢谢 maka maka源于中文码咖,意为写代码的大咖 一眼即可看懂的前端框架,简约而不简单 1.安装 bash sudo npm i -g @m ...

  8. JavaScript:如何获取某一天所在的星期

    我们会遇到的需求的是,获取今天或者某一天所在星期的开始和结束日期. 我们这里来获取今天所在星期的始末日期,我们可以通过(new Date).getDay()来获取今天是星期几,然后再通过这个减去或者加 ...

  9. redhat5配置网络源

    最近适配了一堆linux系统, Redhat4/5/6, ubuntu 12/14/16, Suse 10/11/12 其中适配到Red5 时候配置网络源 # The mirror system us ...

  10. fiddler抓包-快速找到准确的接口与断点介绍

    前言: 相信有不少小伙伴提出,如果一堆杂七杂八的接口在fiddler显示,眼花缭乱的该怎么办?本篇文章小编给大家带来的内容是: 1.fiddler中设置域名过滤,使得快速定位你需要的接口: 2.断点, ...