IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++对C语言的扩充 -> 正文阅读

[C++知识库]C++对C语言的扩充

命名空间

目的:为了解决C++中命名冲突的问题。 比如,当自定义了两个函数的函数名相同、自定义的函数的函数名与标准库中函数的函数名相同时,为了区分,C++引入了命名空间进行标识。

标准命名空间

using namespace std;

std为C++的标准命名空间

自定义命名空间

在C++中,我们可以用namespace关键字自定义命名空间。比如:

namespace sp
{
	void function(){}
}

其中,我们自定义了一个名为sp的命名空间,在这个命名空间中,有一个function()函数。

使用命名空间定义元素

(1)直接引用

using namespace std;

(2)间接引用

using std::cout;
cout<<"Hello,world";

(3)命名空间::元素
例如输出数据时:

std::cout<<"Hello,world"<<std::endl;

匿名命名空间

匿名命名空间在创建时不写名字,由系统自动分配。但是,匿名命名空间的内容只能被当前源文件使用,其它源文件不能使用。

输入输出

在C++中,输入输出都是用“流”(stream)实现的。

基本语法

1.cin
与“>>”结合使用,用于输入信息。

//输入单个数据
int a,b;
cin>>a;
cin>>b;
//输入多个数据
int a,b;
cin>>a>>b;

2.cout
与“<<”结合,用于输出信息。

//输出常量
cout<<"Hello,world"<<endl;
cout<<'w'<<endl;
//输出单个变量
int c=200;
cout<<c<<endl;
//输出多个变量
int f=100;
int g=50;
cout<<g<<"步笑"<<f<<"步"<<endl;

其中,endl为换行符。

默认参数

#include<iostream>
using namespace std;
void function(int a,int b=20,int c=30){
	cout<<a*b*c<<endl;
}
int main(){
	function(2);//只传递2给a,其它都默认用形参
	function(2,3);//传递2给a,3给b,默认用形参
	function(1,2,3);//传递1给a,2给b,3给c
	return 0;
}

使用规则

1.默认参数是从右向左进行赋值。也就是说,如果有一个参数设定了默认参数,其右边不能存在未赋值的形参。
2.默认参数在参数传入时,会从左向右进行参数的匹配。
3.默认参数只能在函数声明中出现一次。

函数重载(overload)

功能:用来实现功能类似而所处理的数据类型不同的问题。也就是说,函数重载是在同一个作用域内函数名相同,但是实现功能不同(参数个数或者参数类型不同)的函数。
例如以下三个重载函数:

void mult(int a,int b);
void mult(float a,float b);
void mult(double a,int b, float c);

注意:
当重载函数的形参中有默认参数时,应避免产生调用的二义性,例如:

void mult(int a,int b=1);
void mult(int a);

此时调用mult函数时,便会产生调用的二义性。因此在编写重载函数时,不要写带有默认参数的重载函数。

引用

定义格式

数据类型& 引用名 = 变量名

其中,符号“&”只起到标识的作用。

用法

#include<iostream>
using namespace std;
int main(){
	int a=100;
	int& b=a;
	cout<<"a的地址:"<<hex<<&a<<endl;
	cout<<"b的地址:"<<hex<<&b<<endl;
	cout<<"b的值:"<<b<<endl;
	return 0;
}

在这里插入图片描述

其中a的地址与引用b的地址相同,b与a的值相同,也就是说,引用只是给变量换了一个名字。

注意事项

1.引用在定义时必须初始化,并且变量类型要保持一致。
2.常量不能被引用。例如int& b=200是不可行的。
3.引用在初始化后,其值不能再更改。

引用和指针的区别

引用指针
不需要占据额外的存储单元需要额外占据存储单元
作为函数参数时,实参是变量的地址作为函数参数时,实参是变量本身
不可以为空可以为空
被创建时被初始化可以在任何时候被初始化
在初始化后不可以改变初始化后可以改变,既指向其它的存储单元

字符串类

字符串的定义

string a1;
a1="hello,world";//第一种
//------------------
string a2="hello,world";//第二种
string a3=("hello,world");//第三种
string a4(6,'b');//第四种,输出6个b

字符串的操作

1.访问字符串

//将第一个和第三个b改为c
string a="bbbbbb";
a[0]='c';
b[2]='c';

2.字符串的连接

string a,b;
a="hello,";
b="world";
cout<<a+b<<endl;//输出hello,world

3.字符串的比较

//比较a1和a2的长度
string a1,a2;
cin>>a1>>a2;
if(a1>a2){
	cout<<a1的长度大于a2<<endl;
}
else(a2>a1){
	cout<<a2的长度大于a1<<endl;
}

4.字符串长度的计算

string a="hello,world";
cout<<"a的长度为:"<<a.length()<<endl;

5.字符串的交换

string a1="hello,";
string a2="world";
a1.swap(a2);//第一种方式
swap(a1,a2);//第二种方式

分配/释放内存

new分配堆内存

格式

new 数据类型(初始化列表);

其中,数据类型为申请的内存空间中,储存的数据的类型;初始化列表为储存的数据。

new和malloc的区别

newmalloc
属性编译器支持头文件支持
参数无需指定内存块大小需要指出所需内存的大小
返回类型返回对象类型的指针void*
分配失败抛出bac_alloc异常返回NULL
重载允许重载不允许重载
内存区域自由存储区上为对象动态分配内存空间从堆上动态分配内存

new的用法

(1)创建基本数据类型对象

int* a=new int(100);//存储int类型的数据
int* b=new float();//存储float类型的数据,初始化列表为空,默认0初始化对象
char* c=new char;//存储char类型的数据

(2)创建数组类型对象

new 数据类型[数组长度];

char* a=new char[20];//创建长度为20的字符串

delete释放堆内存

格式

delete 指针名;

释放数组对象

delete []指针名;

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:15:53  更:2021-07-24 11:16:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 18:44:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码