C++入门学习(1)

一,我的第一个C++程序

代码:

cpp 复制代码
#include<iostream>
using namespace std;
int main()
{
	cout << "hello world" << endl;
}

这是我写的第一篇关于C++的博客,上面的程序也是我写的第一个C++程序。对于用惯了C语言的我来说还是有很多的不适应的。所以我要通过写博客来渐渐熟悉C++的语法和特点。

二, 对于上面代码的解释

1.namespace

在C++语法中,这是一个叫做命令空间的关键字。 这个关键字的作用就是为了防止我们定义的一些变量与C++标准库里的变量名产生冲突。比如偏要定义一个叫做cout的变量。但是很明显,这样强行定义就会报错。那我们该如何来解决一下子呢?救赎之道就在命名空间上。写成代码如下:

代码:

cpp 复制代码
#include<iostream>
using namespace std;
namespace me {
	int cout = 0;
}
int main()
{
	cout << "hello world" << endl;
}

这样将同样的名字的两个变量和对象放到两个不同的区域内便可以让这两个东西不发生冲突。

namespace的特性:

1.如果定义了同样名字的定义域,那这两个定义域在同一个文件使用时就会合并。

2.不同名字的namespace可以嵌套。

如以下代码:

cpp 复制代码
#include<iostream>
using  std::cout;
using std::endl;
namespace me {
	int cout = 0;
	//在me作用域里面嵌套一个I作用域
	namespace I
	{
		int a = 0;
	}
}
int main()
{
	cout << "hello world" << endl;
	cout << me::cout << endl;
	//访问I里面的变量a
	cout << me::I::a << endl;
}

2.::(域作用限定符)

但是这两个同名的东西终究是要碰到一起的。比如我要打印变量cout的值。因为main是程序的入口并且一个cpp文件中只能有一个main函数,所以我必须将变量cout移到main函数中。这时就会发生命名冲突了。这事该怎么办呢?这时就轮到**::(域作用限定符)**出马了。写成代码如下:

代码:

cpp 复制代码
#include<iostream>
using namespace std;
namespace me {
	int cout = 0;
}
int main()
{
	cout << "hello world" << endl;
	cout << me::cout << endl;
}

域作用限定符的作用就是为了说明这个变量是某某作用域里面的变量,上面的代码就是说明第二个cout是作用域me里面的变量。

三,using声明

在我写的第一个cpp文件中,可以看到有这样一段代码:

cpp 复制代码
using namespace std;

其中有using这个关键字。那这个关键字的作用是什么呢?如果没有这个:

cpp 复制代码
using namespace std;

这个程序还能运行下去吗?答案是不能。因为cout会报错。这是为什么呢?其实原因在于cout是定义在一个叫做std的命名空间里的。using namespace std; 相当于给了外面这个程序一个访问std命名空间的权限。有了权限再访问std这个命名空间时才不会报错。

using 的特性

using 在声明作用域时可以全部声明也可以部分声明。其中,代码:

cpp 复制代码
using namespace std;

就是将std这个作用域给全部声明了。但是为了安全我们还可以部分声明,代码如下:

cpp 复制代码
//部分声明
using  std::cout;
using std::endl;

namespace me {
	int cout = 0;
}

int main()
{
	cout << "hello world" << endl;
	cout << me::cout << endl;
}

这时想用cin是用不了的。因为没有声明就没有资格访问。

四,cin与cout

cin与cout是两个对象**。**其中cin是istream类型的对象,cout是ostream类型的对象。cin和cout对应的作用就是标准输入与输出。要调用这两个对象就得包含头文件以及得到这两个函数的调用权:

这样:

cpp 复制代码
#include<iostream>
using namespace std;

或者这样:

cpp 复制代码
#include<iostream>
using  std::cin;
using  std::cout

在这里可能有人会问:cpp都包含c了,也就是能够在cpp文件里使用c语言里的输入与输出了为什么还要重新定义cin和cout这两个对象呢?这里就要讲到cin和cout的好处了。cin与cout****可以智能识别数据的类型,这一点c语言里的输入输出函数可做不到啊!!!

输出运算符<<与输入运算符>>

在c语言的学习当中我们学过<<与>>,那时候它们叫做移位操作符。但是当这两个符号的左右两边有cin或cout以及要打印的对象时这两个符号就变成了输入与输出运算符了!!!

到这里我就将我的第一个cpp程序介绍完了,如果有错请大家指正!!!

相关推荐
布莱克6052 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
前进的李工4 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律6 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
沫璃染墨7 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
CCIE-Yasuo7 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
La Pulga8 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
li星野9 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光9 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
小超人诞生日记10 小时前
C++ 智能指针的使用及其原理详解
c++·算法