博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ primer plus chapter 8
阅读量:4487 次
发布时间:2019-06-08

本文共 2096 字,大约阅读时间需要 6 分钟。

头文件内容

原型

#define const 常量

结构声明

类声明

模板声明

内联函数

<>标准头文件库查找

""工作目录和源代码目录 没有则找标准 自己的头文件用引号

 

#ifndef CORDIN_H_

#define CORDIN_H_

 

#endif  其他地方有相同的定义则跳过

 

自动存储 开始函数被创建结束释放

静态存储 整个程序运行过程存在 static

线程存储 并行任务 放在不同线程中处理  如果 thread_local则声明和线程一样长

动态存储 new 一直在 知道delete  又叫做free store heap(堆)

嵌套内同名声明 新的hide旧的  比如main 定义了a  main内部有个wa函数也定义了a 新的a隐藏旧的a

 

register int count_fast  寄存器存储自动变量 提高访问速度   //现在没啥用

 

静态持续变量(没有初始化 值为0 0将被强制转化为合适类型 结构成员也会被初始化0):                                                                                 

外部链接 其他文件可用 函数外直接声明  如 int a =3  常规外部变量有外部连接性 静态外部变量隐藏常规外部变量 

内部  本文件 函数外文件内用static 

无连接  当前函数代码  函数内用static  程序启动时候初始化 以后调用时候不会再次初始化

这三种这个程序都存在  使用固定内存块存储 

 注意的是 const int finger = 10 是内部的   extern const int finger  但是 extern const int finger = 11 就是外部的了(只有一个文件可以初始化哦).......

 

violatile 代码没有对程序修改 值也可能变化

const 内存初始化后不能再修改

 

mutable 即是结构CONST 但是某个成员也可以被修改

 

函数都是静态的 外部链接  你要内部使用则要在定义和原型前加static

单定义规则适用于非内联函数 程序只能包含一个定义 外部链接的话只能有一个程序定义  内联则不受约束 但是C++要求同一个函数内联定义要相同

 

现在程序文件内找 找不到去库里找 所以程序员优先而不是库函数(标准库程序员不能用)

 

spff(double,double)  C里面可能就_spff了 而 C++ 可能用_spff_d_d表示

语言连接性 extern "C" void spiff(int)  用C约定来查找

extern "C++" void spaff(int)  用C++约定  ("C++"可以省略)

 

extern int blem 引用定义 引用已有  

extern int blem = 2  声明定义

函数基本都是外部链接

::提供全局变量 如 ::warming采用全局warming 隐藏局部warming

 

自动内存LIFO 后进先出

动态内存则看怎么用new和delete  (程序结束一般也会被释放 系统很蠢则不会)

还有块是静态变量

 

int *pi = new int(6)    *pi设为6  (C++11 可以用大括号)

double * pd = new double (99.99)  *pd设为99.99

C++11 支持 大括号列表华

struct where {double x; double y; double z;};

where * one = new where {2.5,5.3,7.2}

int * ar = new int[4] {2,4,6,7};

 

int * pa = new int[40]  也可以 new(40 * sizeof(int)); 

delete [ ] pd;

 

定位运算符 

char buff[BUF]

如 pd = new (buffer) double[N]  就会一直用给定的buffer地址

这里不能用delete

 

声明区域 可以在其中声明的区域 函数外的声明区域在所在文件 函数则是代码块

潜在作用域 潜在作用域从声明点开始 到声明区域结尾 被声明区域包含

名称弓箭 提供一个声明区域 一般是全局的

namespace Jack{

double a;

void c();

}

namespace Jill

{float a;

double c;

void c();

}  两个名称空间的函数不冲突 可以在另外个文件提供 void c的代码 

namespace Jill{

void c{

...........

}}

usingJill::a  将a添加到声明区域中 是一个局部变量会覆盖全局

全部导入(using编译) 不会报错 局部会覆盖空间版本   导入指定(声明using) 发生冲突时编译器会报错

可以嵌套

using a::b::c::d;

可以别名 namspace a =std;

如果没有名字只能在当前区域使用 不能用using  namespace {int a,double b;}

加static 内部链接静态存储  

转载于:https://www.cnblogs.com/cyborg/p/10277249.html

你可能感兴趣的文章
Mark Down初学
查看>>
Python之路【第九篇】堡垒机基础&数据库操作
查看>>
小教练教MM如何去掉你的小肚子
查看>>
JS跨域请求
查看>>
jmeter之Dummy Sampler
查看>>
MySQL 调优基础(四) Linux 磁盘IO
查看>>
为什么选择Android Studio 而是 Eclipse
查看>>
Linux 系统目录结构(二)
查看>>
数列分块入门 1
查看>>
PHP一个失败的类,解析。。。。
查看>>
DOMDocument类文件
查看>>
JS Closure 闭包
查看>>
bzoj 1578: [Usaco2009 Feb]Stock Market 股票市场【背包】
查看>>
hdu 3038 How Many Answers Are Wrong【带权并查集】
查看>>
二叉树的基本操作
查看>>
软件工程之寻找水王
查看>>
MSMQ 消息队列错误处理
查看>>
Prism for WPF 搭建一个简单的模块化开发框架(五)添加聊天、消息模块
查看>>
在VisualStudio 工具箱中隐藏用户控件
查看>>
C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较...
查看>>