前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++基础——C++相比C语言的新特性梳理总结(C++新特性、输入输出方式、命名空间namespace)

C++基础——C++相比C语言的新特性梳理总结(C++新特性、输入输出方式、命名空间namespace)

作者头像
Winter_world
发布2023-03-08 10:57:50
5290
发布2023-03-08 10:57:50
举报

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!

QT开发实战 嵌入式通用开发实战 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》

长期持续带来更多案例与技术文章分享;

欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。

原文链接:https://cloud.tencent.com/developer/article/2235701

——————————————————————————————————

目录

0 引言

1 C++常用的新特性

2 C++的输入输出方式

3 C++的命名空间

4 总结


0 引言

        指针、数据类型、变量类型、判断和循环等,这些和C 语言基本是一样的用法,这些C语言基础就没必要赘述了,我们关注的是C++的面向对象编程,本次博文梳理总结下C++相比C的一些新特性。

1 C++常用的新特性

这里仅列举几个常用的C++新特性。

  • C++比 C 语言新增的数据类型是布尔类型(bool),但在新的 C 语言标准里已经有布尔类型了,但是在旧的 C 语言标准里是没有布尔类型的,编译器也无法解释布尔类型。
  • 在传统的 C 语言里,变量初始化时必须在程序的前面定义在前面, 而 C++则是可以随用随定义。
  • C++可以直接初始化,如 int x(100);这样就直接赋值 x=100。

2 C++的输入输出方式

(1)输入输出流程

C语言的输入输出方式:

  • 输入:输入设备-》输入流-》scanf-》变量;
  • 输出:变量-》printf-》输出流-》输出设备;

而C++中,使用cin、cout代替scanf、printf,在输入和输出的流程上没变,只是关键字和用法变了,效率上还是C语言的高,但是没有C++的使用方便简单:

  • 输入:输入设备-》输入流-》cin-》变量;
  • 输出:变量-》cout-》输出流-》输出设备;

(2)语法形式

看下C++的输入输出语法

cin语法形式:

cin >> x;//x的数据类型随意

若要输入两个不同的变量:

cin >> x >> y;

cout语法形式:

cout << x << endl;//x的数据类型随意,endl 指的是换行符(可以省略),同 C 语言的“\n” 效果。

若要输输出两个不同的变量:

cout << x << y endl; // 注意错误的语法 cout<<x,y<<endl;变量间不能用逗号

3 C++的命名空间

(1)命名空间的作用

命名空间这个概念在上次博文Ubuntu下编写C++环境配置总结中提到过

代码语言:javascript
复制
  1 #include <iostream>
  2 using namespace std;
  3 int main()
  4 {
  5     cout << "Hello World!" << endl;
  6     return 0;
  7 }

        其中的using namespace std,注意1行中引用头文件的写法,是#include <iostream>,而不是iostream.h,因为有.h 的是非标准的输入输出流,是 c 的标准库。无.h 的是标准输入输出流,就要用命名空间。

        using 是编译指令, 声明当前命名空间的关键词。从字面上理解using namespace std的意思就是使用命名空间 std。cin 和 cout 都是属于 std 命名空间下的,加上 using namespace std;这句话,才可以使用,cin 和 cout 可以写成 std::cin 和 std::cout,“::”表示作用域。

上面是一个命名空间的示例,那么为什么会使用命名空间?

        命名空间其实可以解决命名冲突的问题,且方便管理,具体来说就是加个前缀。比如C++ 标准库里面定义了 vector 容器, 咱们自己也写了个 vector 类,这样名字就冲突了,通过加前缀解决。要用标准库里的就用 std::vector 来引用。用自己定义的就用自定义的前缀::vector 。经常写全名会很繁琐,所以在没有冲突的情况下写一句using namespace std;,接下去的代码就可以不用写前缀直接写 vector 了。

(2)自定义命名空间示例

在Ubuntu下新建一个02_namespace目录,目录下新建一个02_namespace.cpp文件,代码如下:

代码语言:javascript
复制
#include <iostream>
using namespace std;

namespace A
{
	int x = 0;
	void func(){
		cout << "A namespace\n";	
	}
}

using namespace A;

int main()
{
	func();
	A::x = 1;
	cout << A::x << endl;
	A::func();
	return 0; 
}

首先,自定义了一个命名空间A,里面有变量x初值为0,函数func()打印输出;

然后,声明了命名空间A,所以,可以在main()主函数中可以直接使用func(),没有声明的话就要写成A::func();

可见,主函数中可以直接修改命名空间中变量值,并将其打印出来。

编译程序,运行查看打印输出结果:

4 总结

        本次博文简单梳理了C++语言相比C语言的一些常用新特性,对比了C++和C语言的输入输出形式差异,显然C++的输出要更简单易用些,最后简述了C++命名空间的作用,并用一个小实例进行了演练测试,后面会出几篇博文继续总结下C++的面向对象编程。

作于202303072130,已归档

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 引言
  • 1 C++常用的新特性
  • 2 C++的输入输出方式
  • 3 C++的命名空间
  • 4 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档