标准C++(1)
一、引用
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
例: int& num;
引用类似于起别名
注意:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
(5)引用也可以当作函数的返回值,但绝不能返回一个局部变量的引用。
(6)引用可以当作函数的参数,它引用的对象就是函数的实参。引用可以达到指针的效果。
(7)引用不光可以引用标识符,也可以引用立即数,但必须加const属性
(8)不能用 返回值不是引用的函数的返回值给引用初始化
二、C++的内存管理运算符
在C++中使用 new/delete 来管理内存,new 用来申请内存,delete 用来释放内存。
具体用法如下:
#incldue <iostream>
class Student
{
char name[];
char sex;
short;
}; int main()
{
Student *stu = new Student; delete stu;
}
使用 new 创建结构对象时,会自动调用构造函数,delete 时会自动调用析构函数
【例】 Student* stu = new Student("hehe");
[]可以配合new和delete申请或释放数组。new[] 不可与delete混用,必须使用delete[]释放
int* p = new int[]{,,,,,,,,,};
delete[] stu;
三、C++的函数
C++中函数可以在main函数前执行
C++具有函数重载的功能
可以使用同一个函数名,定义多个参数不同(返回值可以不同,前提是参数不同)的函数。
C++中函数的参数可以有默认值,
1、函数的默认参数必须靠右。
2、默认参数要尽量少用,因为可能会引起重载错误
3、默认参数是编译器在编译时帮助赋值的,所以只能由全局变量、静态变量、字面值对参数进行赋值。
int func(int num1= ,char* name = "abcd")
{
} void func(char ch,short num)
{
}
四、名字空间
C++引用了名字空间的机制。
名字空间:把全局的命名空间进一步分割。可以创建出一个个独立的命名空间防止相互之间命名冲突
1、名字空间的定义
namespace name
{
//变量;
//函数;
//结构、类;
}
2、名字空间的合并
a、同名的命名空间会自动合并
b、在同一个名字空间中标识符必须是唯一的
3、定义与声明分开
namespace n1
{
//在名字空间中声明函数
void func(void);
}
//在名字空间外定义函数
void n1::func(void) {}
4、如何使用名字空间中的内容
a、域限定符(::),直接使用,名字空间::标识符。【例】 ni::func();
b、using namespace 名字空间; 功能是把名字空间中的标识符
c、using 名字空间::标识符 ,表示此标识符对后面的代码公开。
5、名字空间的嵌套
名字空间可以嵌套,但使用时要逐层解析。 n1::n2::n3::num
namespace n1
{
namespace n2
{
namespace n3
{ }
}
}
6、全局空间归属为匿名空间
在全局空间定义的标识符都属于这个匿名空间,匿名空间默认开放。
如果函数中有同名的标识符把匿名空间中的屏蔽了,可以使用空的域限定符来表示他 ::变量名
标准C++(1)的更多相关文章
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- 深究标准IO的缓存
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- Python标准库--typing
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- C++标准库实现WAV文件读写
在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 ...
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- 「标准」的 JS风格
首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...
随机推荐
- thinkphp5.1静态文件存放问题
5.1的版本不能将静态文件放在application目录下,只能放在public目录下,否则会拒绝访问
- Spring @Import 注解
@Import 导入某个bean 文件 @Configuration @Import({User.class,MyImportSelector.class,MyImportBeanDefinitio ...
- c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作
using System; using System.Collections.Generic; namespace demo { class Program { static void Main(st ...
- ssrf漏洞分析
ssrf漏洞分析 关于ssrf 首先简单的说一下我理解的ssrf,大概就是服务器会响应用户的url请求,但是没有做好过滤和限制,导致可以攻击内网. ssrf常见漏洞代码 首先有三个常见的容易造成ssr ...
- Linux —— awk命令
- 作用: 强大的文本分析工具,对于文本分析来说绝对是一把利器 - 语法: awk '{pattern + action}' {filenames} pattern需要查找的内容 action 查找到 ...
- 牛客网Java刷题知识点之什么是异常、异常处理的原理是什么、为什么要使用异常、异常体系、运行时异常、普通异常、自定义异常、异常链
不多说,直接上干货! 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失.同样的道理,计算机的世界也是不完美的,异常情况随时都会发 ...
- 关于C#解析shp文件
最近在做项目时,要求可以上传shp文件到指定的地图中,地图开发使用的arcgisapi,网上找了好多解析shp文件的js,但都不是太理想,直到群里的小伙伴提到Gdal 首先,到GDAL官网下载自己使用 ...
- 基于JavaMail的Java邮件发送:复杂邮件发送
参考:http://blog.csdn.net/xietansheng/article/details/51722660package com.bfd.ftp.utils;import java.ut ...
- Spring 设计原则
Spring 框架有四大原则(Spring所有的功能和设计和实现都基于四大原则): 1. 使用POJO进行轻量级和最小侵入式开发. 2. 通过依赖注入和基本接口编程实现松耦合. 3. 通过AOP和基于 ...
- Git 连接远程仓库Github
创建SSH Key. 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shell(W ...