C++学习笔记系列一
- 定义在名称空间中的变量或者函数都称为实体
- :: 是作用域限定符 ( std:: cout <<"hello , world ")
- 在命名空间之后,可以加上提示语句,//end of namespace A;
- 对于命名空间,除了::,外还可以使用using 命名机制,尽可能将其范围缩小。
- using 编译指令,(using namespace std ; 实体全部引进)建议不要使用,但可以用using申明机制(using std:: out;) (推荐使用)
- 对于全局变量,是位于匿名的命名空间,可以用直接加上双冒号 << : : num; 就可以了,
- 对于C头文件里面的所用实体都认为是放在匿名的命名空间里面的
- 可以把命名空间看成一个容器,
- 名称空间中函数的定义和实现可以分开进行
- 函数原型可以多次声明
- 匿名的命名空间 eg: ( : :memcpy )
- 常量的值是不能被修改的。
- const 常量必须要初始化
- 预处理仅仅是一个打开头文件,进行一个字符串替换,它是不涉及类型检查的。有可能将错误发生的时机延后到运行时,但,如果使用const关键字,它发生的时机是编译时,是具有类型检查的功能。可以尽量使用const关键字,替换宏定义。const常量必须进行初始化。
- 对于const常量指针,当用const修饰指针时,(const在* 左边时,eg: const int * pb),我们是不可以使用指针解引用改变该指针指向内容的值,但是可以修改该指针的指向的。相当于左边加上const后,是保护指针指向的内容的额,叫常量指针。 (经常用)
- 对于const 如果在* 的右边,是如 int * const p;时,此时我们可以改变它指向内容的,但是不可以修改它的指向的,相当于,定义了一个p 的指针常量。(经常用),如果不清楚,可以参见prime,以C++ prime为准。从右边向左阅读。
- 类似的概念还有,指针数组 (eg: int * p[10])和 数组指针int (*p)[10],指针函数( int *p( ) )返回指针的函数和函数指针int (*p)() 。
- c++的申请堆空间,( eg: int* p= new int(1) ),可使用delete 释放空间。首先new/ delete是表达式,其次开辟空间时,是可以进行初始化的,成对使用。申请10个对象时,int *p=new int [10] ( ) ,它是可以识别类型的。这样可以把数组初始化为0,,释放时,delete [ ] p;都需要加上中括号。
- 对于c语言的malloc / free 是c的标准库函数,开辟空间时,是不能初始化的,但可以赋值,给指向,也是必须的。不然就是野指针。成对使用。
- 引用是一个变量的别名,有一点和指针很像,因为引用要绑定在一个变量上去的,故必须进行初始化,绑定,一旦绑定就不会再改变指向。(eg: int & ref =a)类似于一个指针常量,不能改变指向。
- 操作引用的时候,就是操作变量本身。经典例子,Swap交换函数,法一,传地址,交换值,法二,传引用,,
- 非const左值引用不能绑定到右值--->只有const左值引用才能绑定到右值,eg: const int & ref =10;-->可以。int & ref =10;不行,左值是左边可以加运算符的eg: &a,,
- swap(int & refa,int &refb)-------swap(a,b) 在参数传递时,可以节省复制的开销,不用另外开辟空间,提高程序的执行效率,使用更直观。
- 指针是一个独立的实体,而引用是一个别名
- 指针是不需要进行初始化,但引用必须要进行初始化。
- 指针是可以改变指向的,引用不能。
- 指针可以指向NULL,但引用不能。
- 引用作为函数的参数,操作的就是实参本身。
- 引用作为函数的返回值。首先要保证绑定引用的变量的生命周期一定要大于函数的。例如:在函数栈里面的一个局部变量被引用返回时,局部变量就会被销毁。故注意 不要返回一个局部变量。
- c语言中,例如,double b; int a=(int ) b;
- c++中强制转换的运算符,关键字,,
- int a,= static_cast<int>(b);
- 还有const_cast / dynamic_cast / reinterpret_cast(暴力转换)
- c++支持函数重载,其实现的原理当函数名称相同时,是名字改编那么( name mangling),其步骤是,当函数名称相同时,会根据函数的参数的类型,个数,以及顺序的不同进行改编。可先生成 .o文件,再用nm命令查看 .o 文件。
- 当我们需要函数名以c语言的方式去调用,名字不进行名字改编可以采用关键字 extern "C"{ 里面为语句 } //end of extern "C" ,这样就不会进行名字改编。 这样就可以使用C 的方式。
- c语言在处理字符串时,需要考虑空间大小,避免越界。
- C++的字符串处理就比较方便,#include<string> 也在std的命名空间里面。std::string s1="hello"; std::string s2(",world");
- 遍历字符串的内容,string类也可以直接访问, s.size() 或s.length ( ) 字符串长度。其中也可以直接用下标访问法去访问。
- 截取字符串 s. substr(初始位置,截几个) 返回值即为截取的字符串。默认情况下是从0 开始的,
- 将C++风格的字符串转换成c风格的字符串,,,const char *p= s.c_str( ) ;常用 或者 S.data( )方法也可以完成这样的工作。
- “hello” 的类型就是const char * 的类型。故这就是反转换成C++的string 的类。(常用 )
C++学习笔记系列一相关推荐
- SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引
SQL Server 2008中的一些特性总结及BI学习笔记系列,欢迎与邀月交流. 3w@live.cn ◆0.SQL应用系列 1.SQL Server 2008中SQL增强之一:Values新用途 ...
- BizTalk学习笔记系列之二:实例说明如何使用BizTalk
BizTalk学习笔记系列之二:实例说明如何使用BizTalk --.BizTalk学习笔记系列之二<?XML:NAMESPACE PREFIX = O /> Aaron.Gao,2006 ...
- SQLServer学习笔记系列2
SQLServer学习笔记系列2 一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继 ...
- CodeMonkey过关学习笔记系列:11-20关 对象
CodeMonkey过关学习笔记系列:11-20关 •对象和朋友(OBJECTS AND FRIENDS) 11~20 知识点 turnTo,turtle.step 做题之前,解决事情之前我们先列好计 ...
- CodeMonkey过关学习笔记系列:46-55关 数组
CodeMonkey过关学习笔记系列:46-55关 •"数组"索引 (ARRAY INDEXING) 46~55 第 46 关挑战 当我们有一根以上的香蕉时,我们可以用 [] 这个 ...
- CodeMonkey过关学习笔记系列:71-85关 函数
CodeMonkey过关学习笔记系列:71-75关 •"函数"农场 (FUNCTION FARM) 71 ~ 85 第 71 关挑战 "函数"农场step di ...
- 自动控制原理学习笔记系列( 一、自动控制系统的稳定性分析)
自动控制原理学习笔记系列 第一篇 自动控制系统的稳定性分析 自动控制原理学习笔记系列 一.目的 二.操作步骤 1. 研究高阶系统的稳定性 2.系统根轨迹增益变化对系统稳定性的影响 一.目的 (1) 研 ...
- C++菜鸟学习笔记系列(3)——基本内置类型的使用
C++菜鸟学习笔记系列(3) (前两天比较忙,没有进行更新,今天及时又写了一篇) 本期主题:C++中基本内置类型的使用. 与C语言类似的C++也定义了一套包括算术类型和空类型在内的基本数据类型,其中算 ...
- SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引 @邀月
邀月 的数据库学习 http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html SQL Server 2008中SQL应用系列及BI ...
- 步步为营 .NET 设计模式学习笔记系列总结
设计模式我从开篇到23种设计模式的讲解总共花了进两个月的时间,其间有很多读者给我提出了很好的建议,同时也指出了我的不足,对此我表示感谢,正是由于很多读者的支持我才能坚持的写到最后.在此表示我真诚的谢意 ...
最新文章
- 牛客网多校训练第一场 B - Symmetric Matrix(dp)
- 你在使用Gmail,Wallop,MSN Spaces,Three Degrees吗?
- WPF Splash Screen 和启动速度相关资料
- ArcGIS Server10.2服务启动不了之http://localhost:6080/arcgis/manager无法打开之arcMap 无法打开6080admin问题解决之路
- inDesign入门教程,如何添加阴影效果?
- android核心基础(5)_Android)java虚拟机和Dalvik虚拟机的区别
- 有关Ajax实现的两种方法
- Atitit 如何做数据分析 描述型:发生了什么?可视化仪表盘化很重要。	1 2. 诊断型:为什么会发生?结合历史记录	1 3. 预测型:可能发生什么?	2 4. 指导型 规划未来行动:我需要做什
- 牛客网 F-The Biggest Water Problem
- SLAM学习----使用rplidar运行Hector算法
- 单片机实验四 矩阵键盘实验
- 如何将docker部署的wekan迁移另一台服务器
- mysql 延迟关联
- 38、Power Query-背后的贤内助M语言
- mac如何查看IP地址,mac怎么查看IP地址
- 高清修复太感人!百部高清修复版港片上线,AI增强老剧画质
- python综合实验心得体会_综合实验心得体会
- react-dom.development.js:6202 Unable to preventDefault inside passive event listener invocation 错误
- Yahoo! 中国搜索使用说明(转)
- oracle自动更新视图,Oracle 视图及视图更新
热门文章
- Mysql数据库备份和按条件导出表数据
- memcached 如果进程占用cpu很高
- ANT:fileset中使用exclude
- 隐式类型转换中显式申明的非必要性
- mac启动mysql,apache,php
- Linux系统间文件双向同步搭建Unison版
- 网络软文发布软件_星浪中合网软文写出爆款汽车营销软文的特点是什么?
- 中职计算机英语c答案,中职高考计算机试题及答案-20210622105004.docx-原创力文档...
- vfp程序改错 计算机和英语,vfp程序改错教案.doc
- python3 换源_CentOS 7.5 下 python3 安装及 pip 换源