码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 重点关键字

时间:2019-02-14 22:19:04      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:函数   bsp   mamicode   mic   let   define   基本类型   article   自动   

const

被修饰常量不可改值(只读);有类型检查;通常保存在符号表中,不分配内存;效率高;

与#define的区别:宏只是机械替换,不做类型检查;使用多少次(赋值),就查找多少次内存,效率低;const可以修饰指针,宏不可以;const可以控制在函数内部值不可变。

extern

置于变量或者函数前,表示定义在别的文件中。提示,遇到次变量或函数时,在别处寻找定义。

extern "C"---调用C代码(需要按照C规则编译);

 operator

用于重载运算符时

TYPE operator 运算符(形参...)

{

  ......

}

 sizeof

sizeof(对象)

sizeof(变量或者表达式)

struct大小计算 (字节对齐)

结构体顺序存储,为了加快CPU的取数速度,编译器会对结构体进行处理。让基本数据类型的数据处于能被其大小整除的地址上。比如int型,第一个存在 4-8地址 ,中间有一个char 在8-9地址,那么下一个int 在12-16,中间的10-11就需要字节填充。这样一来,结构体的siizeof就会增大。

字节对齐准则

1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除。
2. 结构体的每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要,编译器会在成员之间加上填充字节(internal adding)。
3. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员后加上填充字节(trailing padding)。
空结构体大小1字节,用于占位。

union的sizeof

联合体重叠式存储,成员共享一段内存。

sizeof(union) = max(sizeof( union(i) )

数组的sizeof

1.字符串,多一个‘/0‘

2.当数组为形参时,大小相当于指针sizeof,大小即地址=计算机内部地址总线的宽度(32位4B, 64位8B)

3.函数,返回值的大小

 static

静态数据成员属于类,而非对象,一个类只有一份;

静态成员函数属于类,而非对象,不能使用this指针来访问,只能访问静态数据和静态成员函数;

静态数据成员,必须在类外进行初始化,初始化使用作用域运算符标明所属类;

如: int Demo::staticVName = 1;

有时候,我们为了比避免父类的静态变量影响子类,可以在子类中定义一个与父类相同的static变量。这不会引起错误,因为有name mangling存在。(会对重载的变量和函数进行处理,以达到区分的目的)

另外,static关键字还有以下作用

隐藏(只在本文件、函数中可见)

保持变量的持久化(函数中的static变量可以持久化,且可以控制可见范围)

默认初始化为0

 new 与 malloc

new:C++运算符;new-delete;使用简单,不计算大小,不需要类型转换;自动调用构造、析构函数;内存申请失败,抛出异常;不能进行重新分配;进行类型检查;可设置内存分配器;

malloc:C语言标准库函数;malloc-free; 需要计算大小,需要显示类型转换;不调用;申请失败,返回NULL; 可利用relloc重新分配内存;不检查类型;不可设置内存分配器。

 union

 技术图片

 

 

 参考资料

https://blog.csdn.net/yixianfeng41/article/details/54668327(main)

https://www.cnblogs.com/songdanzju/p/7422380.html

https://www.cnblogs.com/puheng/p/9575379.html

https://bbs.csdn.net/topics/70227932

 

C++ 重点关键字

标签:函数   bsp   mamicode   mic   let   define   基本类型   article   自动   

原文地址:https://www.cnblogs.com/yocichen/p/10380664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!