c++ primer 笔记 (二)

第二章笔记  (貌似记得有点多)

 

把负值赋给unsigned对象时完全合法的,其结果是该负数对该类型的取值个数求模后的值   -1     (对265求模)  255
float型只能保证6位有效数字,而double型至少可以保证10位有效数字
定义长整形时,应该使用大写字母L。小写字母l很容易和数值1混淆
L‘a'在字符字面值前加L就能够得到wchar_t(扩张字符集,比如汉字和日语)类型的宽字符字面值
在一行的末尾加一反斜杠(\)符号可将此行和下一行当作同一行处理。
不允许\后面有注释或空格
本书,对象是内存中具有类型的区域。不管是内置类型还是类类型。
标识符不能包含两个连续的下划线__,也不能以下划线开头后面紧跟一个大写字母_A
 
*******初始化 != 赋值**************************
初始化:创建变量并给它赋初始值
赋值:擦除对象的当前值并用新值代替
直接初始化 int ival (1024);更灵活且效率高
复制初始化 int ival = 1024;
构造函数:定义如何进行初始化的成员函数
string all_nines(10,'9');//all_nines = "9999999999"
当定义没有初始化式的变量时,系统有时候会帮我们初始化变量。
系统提供什么样的值取决于变量的类型,也取决于变量的定义
内置类型变量在函数体外定义的变量都初始化成0,
在函数体里定义的内置类型变量不进行自动初始化。
永远不要依赖未定义行为
 
建议内置类型的对象都有初始化(容易、安全
类有默认构造函数,定义类变量时不用显式地初始化变量。
定义:用于为变量分配存储空间,还可以为变量指定初始值。变量有且仅有一个定义 int a = 1;
 
声明:用于向程序表明变量的类型和名字。 int a;
定义也是表明:当定义变量时我们表明了它的类型和名字
extern声明变量名而不定义它。(声明不是定义,不分配存储空间)
说明定义在程序的其他地方 extern int i;
 
*******程序中变量可以声明多次,但只能定义一次******
如果声明有初始化,那么它可被当作是定义
extern double pi = 3.1416 //definition
const把一个对象转换成一个常量
const int bufSize = 512;
常量在定义后就不能被修改,所以定义时必须初始化。
 
//file_1.cc
int counter;
//file_2.cc
extern int counter;
在全局作用域声明的const变量是定义该对象的文件的局部变量。
此变量只存在于那个文件中,不能被其他文件访问。
要使const变量能够在其他的文件中访问,必须显式地指定它为extern。
//file_1.cc
extern const int buffer = 1024;
//file_2.cc
extern const int buffer;
 
引用(reference)就是对象的另一个名字(别名)。主要用作函数的形式参数。
复合类型(compound type)指用其他类型定义的类型。
不能定义引用类型的引用,但可以定义任何其他类型的引用。
int ival = 1024;
int &refVal = ival;//ok:refVal refers to ival
int &refVal2;       //error:a reference must be initialized
int &refVal3 = 10;//error:initializer must be an object
 
const引用
const int ival = 1024;
const int &refVal = ival;
 
int i = 42;
// legal for const references only
const int &r = 42;
const int &r2 = r + i;
同样的初始化对于非const引用是不合法的。
 
double dval = 3.14
const int &ri = dval;
        
int temp = dval; // create temporary int from the double
const int &ri = temp; // bind ri to that temporary
 
const引用(只读)可以绑定到不同但相关的类型的对象或绑定到右值
 
typedef定义类型的同义词---------&定义变量的同义词
typedef double wages; // wages is a synonym for double
typedef wages salary;  // indirect synonym for double
 
enum指出  值是相关联的
// input is 0 ,output is 1,and append is 2
enum open_modes {input ,output,append};
 
不能改变枚举成员的值。枚举成员本身就是一个常量表达式
 
枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行
enum Points {point2d,point2w,point3d,point3w};
 
Points pt3d = point3d; //ok:point3d is a Points enumerator
Points pt2w = 3;        //error:pt2w initialized with int
pt2w = polygon;        //error:ploygon is not a Points enumerator
pt2w = pt3d             // ok:both are object of Points enum type
 
类(自定义类型)定义了该类型的对象包含的数据和该类型的对象可以执行的操作。
每个类都定义了一个接口(interface)和一个实现(implementation)
 
接口(先定义):由使用该类的代码需要执行的操作组成
实现:一般包括该类所需要的数据。还包括定义该类需要的但不提供一般性使用的函数。
定义类时,通常先定义该类的接口,即该类所提供的操作。通过这些操作,可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持该类的实现。
 
成员 = 操作称为成员函数 + 数据称为数据成员
访问标号 public private
 
类不是在类定义里定义数据成员时初始化数据成员,而是通过构造函数的特殊成员函数控制初始化。
 
struct也可以定义类
用class 和 struct 定义类的唯一区别在于默认访问级别:
默认情况下,struct的成员为public
而class的成为为private
编译头文件需要一定的时间---->>>>预编译头文件
头文件用于声明而不是用于定义
double fica_rate  // no extern ,so it's a definition
extern double fica_rate 声明
头文件不应该含有定义这一规则,有个例外
1.定义类
2.值在编译时就已知道的const对象
3.inline函数
 
const对象默认定义它的文件的局部变量
****当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。
当该const变量是用常量表达式初始化时,可以保证所有的变量都有相同的值。但是在实践中,大部分的编译器在编译时都会用相应的常量表达式来替换对这些const变量的使用。所以,在实践中不会有任何存储空间用于存储用常量表达式初始化的const变量。
如果const变量不是用常量表达式初始化,应在头文件中为它添加extern声明,以使其能被多个文件共享。
#include 设施是C++预处理器(preprocessor)的一部分。
预处理器处理程序的源代码,在编译器之前运行
#include 指示只接受一个参数:头文件名。
预处理器用指定的头文件的内容替代每个#include
头文件保护符(header guard)避免在已经见到头文件的情况下重新处理该头文件的内容。
保证多次包含同一头文件不会引起该头文件定义的类或对象被多次定义。
#inndef  SALESITEM_H
#define  SALESITEM_H
// Definition of Sales_item class and related function goes here
#endif
头文件应该含有保护符,即使这些头文件不会被其他头文件包含。
可以用定义在头文件里的实体(如类)来命名预处理器变量来避免预处理器变量重名的问题。
<头文件> 标准头文件   编译器在预定义的位置集查找该头文件
“头文件” 非系统头文件  查找通常开始于源文件所在的路径 

转载于:https://www.cnblogs.com/wincai/p/4218625.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#按ESC退出 或者接受其他键盘消息

From: http://blog.csdn.net/chenshizero/article/details/2173443 先将窗口的KeyPreview设置为true,然后再在窗口的KeyPressUp事件中写代码就可以了 private void Form1_KeyUp(object sender, KeyEventArgs e){if(e.KeyValue 27)//if (e.KeyData Keys.Escape)Application.Ex…

在诺基亚S60v3上运行.NET程序

诺基亚手机采用的几乎都是Symbian OS操作系统。而.NET Framework则是Windows平台的专利&#xff0c;因此.NET程序只能运行在使用Windows Mobile系统的手机上。那么Symbian OS是否就没法运行.NET程序了呢&#xff1f; 答案是否定的。RedFiveLabs一直致力于在Symbian OS上实现.NE…

React开发(162):React关于 this.props.children 总结

this.props.children 的值有三种可能&#xff1a; 如果当前组件没有子节点&#xff0c;它就是 undefined ; 如果有一个子节点&#xff0c;数据类型是 Object&#xff1b; 如果有多个子节点&#xff0c;数据类型就是 Array。

GIT提交的时候出现 ! [rejected] master -> master (non-fast-forward)错误

搜了好久&#xff0c;才找到一个能用的&#xff0c;上面的大概意思是本地库和远程库没有同步导致无法提交合并&#xff0c;那么找到原因了就好办了&#xff0c;只要将本地库和远程库同步就可以了。 git pull origin master --allow-unrelated-histories 或 git pull origin re…

响应式布局---菜单

一个简单的响应式菜单,仅使用media query实现. 上图的作用就是将普通的菜单在缩小浏览器屏幕到一定宽度,或者是在移动设备上的显示效果.现在分步进行实现: 第一步:先构建一个普通的菜单,具体显示如图: 结构如下: <nav class"nav"><ul><li class"…

C# 窗口全屏 隐藏任务栏 (代码)

From: http://blog.csdn.net/mask_of_zorro/article/details/2351091 为了解决C# Windows应用程序全屏显示&#xff0c;在网上找了很多解决方法。当然其中也有成功的方法&#xff0c;但看起来复杂且对我等菜鸟级的人来说更难于理解。其中发现以下几行代码实现真正的全屏显示&a…

Linux管理磁盘配额

&#xff21;、磁盘配额作用限制普通用户使用磁盘空间&#xff0c;不至于因为个别人的浪费而影响到其它人的正常使用&#xff1b;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />&#xff22;、需要内核的支持&#xff1b;&…

Element el-row el-col 布局组件详解

本文目录 背景分栏布局分栏间隔分栏偏移对齐方式响应式布局小结 1. 背景 element的布局方式与bootstrap原理是一样的&#xff0c;将网页划分成若干行&#xff0c;然后每行等分为若干列&#xff0c;基于这样的方式进行布局&#xff0c;形象的成为栅栏布局。 区别是element可…

sql数据库监控语句

--查找被阻塞进程 Select * from master..sysprocesses where dbid9 and blocked > 0--查找阻塞头进程 select * from master..sysprocesses p where dbid9 and blocked<0 and exists (select 1 from master..sysprocesses where blocked p.spid)--查找等待时间长的进程…

C# WinForm 中Label自动换行 解决方法

From: http://hi.baidu.com/tewuapple/blog/item/74070a2451cbcc7c36a80f76.html 在TableLayoutPannel中放着一些Label 如果把Label的AutoSize属性设成True的话&#xff0c;文字超过label长度时就会自动增加&#xff0c;直到后面的字出窗体以外 设置成False时&#xff0c;一旦…

厂家官网常用链接

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1、 IBM develperWorks 中国http://www.ibm.com/developerworks/cn/特点&#xff1a;归档清晰&#xff0c;文档专业质量高&#xff0c;多名家作品&#xff1b;2、 DELL中文官…

axios (get post请求、头部参数添加)傻瓜式入门axios

傻瓜式入门&#xff0c;简单粗暴说用法 通过cdn引入js文件 <script src"https://unpkg.com/axios/dist/axios.min.js"></script>get请求&#xff0c;默认’Content-Type’: ‘application/json’&#xff0c;可在头部参数中&#xff0c;修改Content-Ty…

项目最终复审报告

“北航学堂”项目最终复审报告 一、团队成员简介 Sevens团队在M1和M2阶段都是一共有七名队员&#xff0c;M1阶段我们的团队成员有&#xff1a;陈少杰&#xff0c;金鑫&#xff0c;高孟烨&#xff0c;雷元勇&#xff0c;王迪&#xff0c;邓亚梅&#xff0c;郑培蕾&#xff1b;在…

按ESC关闭当前窗口

在WinForm中经常会需要实现这样的功能&#xff1a;按ESC关闭当前窗口&#xff0c;或者按不同的键&#xff0c;实现不同的功能。 下文以实现按ESC关闭当前窗口为例&#xff1a; protected override bool ProcessCmdKey(ref Message msg, Keys keyData){/*C:\Program Files\Micro…

旁门左道也谈cacti安装

cacti作为一个优秀的流量监控软件&#xff0c;很多人都在用它&#xff0c;很多人也很想使用它。但是后面的这很多人&#xff0c;确没有能用上它。为啥呢&#xff1f;有句话说&#xff1a;“今天很难过&#xff0c;明天很难熬&#xff0c;后天很美好&#xff0c;但是很多人在明天…

js二进制流转Blob对象。Blob对象再转File对象

JavaScript 二进制转文件 使用js将blob对象转file对象 前端处理后端返回的二进制流文件 js中Blob对象一般用法 js中关于Blob对象的介绍与使用 上传的文件对象 完整代码实例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8…

Taro+react开发(61) 一条虚线

.companyIntroDetail_sep{width: 100%;height: 1px;background-color: #F3F3F3 }

javaScript学习之路(1)词法结构

1&#xff0c;javascript是区分大小写的语言 &#xff08;HTML不区分大小写&#xff0c;XHTML区分大小写&#xff09; 2.注释 行注释 // 段落注释 /*......*/3.直接量&#xff1a; 程序中直接使用的数据值 转载于:https://www.cnblogs.com/zxk3113/p/4226082.html