c++学习笔记(5)
1.两个相邻的仅由空格,制表符或者换行符分开的字符串字面值,可连接成一个新的字符串
cout<<"a multi-line "
"string literal"
"using concat"
<<std::endl;
2.如果声明有初始化公式,那么它可以当作是定义,即使声明标记为extern
extern double pi=3.14 //definition
只有当extern声明位于函数外部时,才可以含有初始化式
3.const必须在定义的时候初始化,这点和java不太一样,java的final可以在构造函数中初始化
private:
const int _conv=2;
上面代码报错,提示: 只有静态常量整型数据成员才可以在类中初始化
即类成员只有const static时才可以在定义的初始化!!!
4.在全局作用域里定义非const变量时,它在整个程序中都可以使用。
在全局作用域里定义const变量时,它只在定义的文件中可以使用,其他文件不能使用。
通过指定const变量为extern,就可以在整个程序中访问该const对象。
而声明一个外部定义好的const对象时,在声明中也必须带上const关键字,否则报错。
extert const int counter=100; //defines in file_1.cc
extert const int counter; //declare in file_2.cc
for(int i=0;i<counter;i++) ...
5.定义全局变量时,定义代码需要写在.cc(.cpp)文件中,不能写在.h文件中
而extern一个变量时,extern可以放在.h文件中,也可以放在.cc(.cpp)文件中。还可以放在方法内部。
而定义一个const全局变量时,就可以放在.h文件中。
当要使用一个全局变量时,只需要声明就可以, 不需要管这个全局变量定义在哪个文件中,不需要include这个全局变量所在的类。只要保证全局变量有定义就好。
6.引用就是对象的另一个名字。
引用是一个复合类型,复合类型是指用其他类型定义的类型。
引用必须用与该引用同类型的对象初始化。
初始化是指明引用指向哪个对象的唯一方法。
const引用是指向const对象的引用
非const引用只能绑定到与该引用同类型的对象上,
const引用则可以绑定到不同但相关的类型的对象或者绑定到右值。
const引用可以绑定到非const对象
int &refVal=10; //error
const int &refVal=42; //ok
int val1=10;
int &refVal1_1=val1;
int &refVal1_2=refVal1_1+1; //error
const int val2=10;
const int &refVal2_1=val2;
const int &refVal2_2=refVal2_1+1; //ok
int &refVal2_3=val2; //error
int val4=1.11;
const int &refVal4_1=val4;
double val3=10;
const int &refVal3_1=val3; //把一个int refer绑定到一个double值上
//上面一句在编译器中相当于下面两句代码:
//int temp=val3;
//const int &refVal3_1=temp;
7.头文件的类定义是带分号的
8.一般不能把类成员的初始化作为其定义的一部分,
当定义数据成员时,只能指定该数据成员的名字和类型。
类不是在类定义里定义数据成员时初始化数据成员,而且通过构造函数的特殊成员函数控制初始化。
9.struct和class关键字定义类的唯一区别在于默认访问级别。默认情况下,struct的成员为public,class的成员为private
10.头文件用于声明而不是用于定义,因为头文件包含在多个源文件中,所有不应该含有变量或函数的定义!!!好好理解。
对于头文件不应该含有定义这一规则,有三个例外,头文件可以定义类,值在编译时就已经知道的const对象和inline函数。
在头文件中定义这些实体,是因为编译器需要它们的定义(不只是声明)来产生代码。
11.c++支持所谓的分别编译,这点和java很大不同,java中定义一个类,就是指类的实现。但c++中,类是分两部分,一个接口和一个实现。
当定义一个,是定义类的接口,这个接口是定义在头文件中。而类的实现则可以在任何一个文件中实现。
12.当我们在头文件中定义了const变量后,每个包含该头文件的源文件都了自己的const变量。其名称和值都一样。
13.如果一个头文件A中定义了一个const变量,再有头文件B include了A,还有头文件C include A和B 则编译报错,提示"找到一个或多个多重定义的符号"
14.一些const对象定义在头文件中????没搞懂!!!
c++学习笔记(5)的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- 链表中的倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 基本思想:定义两个指针a,b分别指向头节点, a指针先向前走k-1步(注意:因为倒数节点是从倒数第一个结点开始的,而不是零),然后a指针和b指 ...
- ADO.NET 使用DELETE语句批量删除操作,提示超时,删除失败,几种优化解决思路
起因是如此简单的一句sql 提示:Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应. 提供几种解决思路: 1.检查WHERE条件中字段是否已建索引 2.检查是否被其他表引用,引用表外 ...
- git-svn — 让git和svn协同工作
git-svn — 让git和svn协同工作 svn作为一个优秀源码版本的管理工具,可以适合绝大多数项目.但是因为它的采用中心化管理,不可避免的存在本地代码的备份和版本管理问题.也就是说对于尚未或暂 ...
- JVM与垃圾回收机制(GC)和类的生命周期
JVM运行时数据区 GC(垃圾回收机制) 什么是垃圾回收机制: 在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存,如果不对这些对象清理回收无用的是对象,可能会导致内存的耗尽,所以垃圾回 ...
- Delphi.format填充0
1. ]);// 一共8位数字不够的补零 2. 3. 4. 5.
- LNMP 如何安装mongodb ----lnmp一键安装包之后
mongodb 直接下载官方最新包解压就可以使用了. wget -c http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.4.tgz ta ...
- 最新Dubbo-admin+Zookeeper搭建
Zookeeper搭建: 下载zookeeper压缩包并解压,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/进入conf目录下将 zoo_sa ...
- EasyUI datagrid 多条件查询
<script type="text/javascript"> $(function () { $("#dg").datagrid({ url: ' ...
- Android6.0------权限申请管理(单个权限和多个权限申请)
Android开发时,到6.0系统上之后,有的权限就得申请才能用了. Android将权限分为正常权限 和 危险权限 Android系统权限分为几个保护级别.需要了解的两个最重要保护级别是 正常权限 ...
- 十五 web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础
在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块,然后将网页数据通过lxml下的etree转化为treedata的形式 urllib库中使用xpath表 ...