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;//拷贝

}

最新文章

  1. BZOJ 1857 传送带 (三分套三分)
  2. 用Spring+Junit4.4进行测试(使用注解)
  3. CString 操作
  4. C# 导出到Excel
  5. socket通信入门
  6. 使用BusyBox制作根文件系统【转】
  7. linux清空日志文件内容 (转)
  8. 两个实用的Python的装饰器
  9. 【张泽华】android视频教程下载地址及上课源代码
  10. date 、cal、bc
  11. 345. Reverse Vowels of a String(C++)
  12. centos7 最小安装无ifconfig
  13. javascript 正則表達式补充
  14. redis info详解
  15. 找不到BufferedImage这个Class的解决方法
  16. Linux基础:CentOS安装python3.7
  17. 在kali linux上安装VMware tool
  18. MaskRCNN-Keypoints
  19. AI产品经理成长路
  20. Linux 命令之mv

热门文章

  1. SpringBoot 连接kafka ssl 报 CertificateException: No subject alternative names present 异常解决
  2. 你的环境有问题吧?--byte数组转字符串的疑惑
  3. Vue入门教程 第三篇 (条件与循环)
  4. 转:python2.x 和 python3.x的区别
  5. VM虚拟机启动夜神模拟器卡99%解决办法
  6. Jmeter插件图表分析
  7. 【前端词典】几个有益的 CSS 小知识
  8. 小白学 Python(4):变量基础操作
  9. [BZOJ1116] CLO
  10. Maven安装和在IDEA配置Maven