<CPP学习>第一天 第一个CPP程序 hello word
由于我是计算机类嵌入式专业的大一学生,之前一直使用的是生万物的C语言,了解了其过程性语言的特性及其基础语法,在大一下学期期末阶段想自学一下C++,其实在开学初就买了一本C++ Primer,但由于各种原因没抽出空看,想借期末和暑假这一大段空余时间充分学习一下C++,这也是我写此电子笔记的初衷。
C++是由C语言发展而来,C代表的是过程性语言,C++在C语言的基础上添加的类代表的面向对象语言、C++模板支持的泛型编程。C语言与C++区别不多赘述,为什么要用面向对象,那什么又是面向对象呢?虽然结构化编程的理念提高了程序的可读性,但是在编写大型程序时仍然面临着挑战,为了应付这种挑战,OOP(面向对象)提供了一种新方法。与强调过程性编程不同的是,OOP强调的是数据。
C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定的数据结构,类可以描述数据的基本特征,对象则是描述类的具体数据,通常,类规定了可使用哪些数据来表示对象以及可以对数据进行那些操作。
接下来编写我的第一个CPP程序:
#include<iostream>
int main()
{
using namespace std;
cout << "Hello";
cout << endl;
cout << "world!";
return ;
}
如果程序要使用C++的输入或输出工具,则需要如下这行代码。
#include<iostream>
使用了#include编译指令,该编译指令导致预处理器将iostream文件的内容添加到程序中,这是一种典型的预处理器操作:在源代码被编译前,替换或添加文本。和C语言一样,同样是需要调用头文件,C语言中的输入输出头文件是<stdio.h>,C语言的传统是头文件使用扩展名.h,将其作为一种通过名称标示文件类型的简单方式,但在C++中用法变了,对老式C的头文件保留了扩展名h,仍然可以使用,但C++的头文件则没有扩展名。有些C转换为C++的头文件,这些文件被重新命名,去掉了扩展名h,并在文件名称前加上了前缀c,表示来自c语言。例如C++版本的math.h为cmath。
名称空间
using namespace std;
如果使用iostream,而不是iostream.h,则应该使用名称空间编译指令来使iostream中的定义对程序可用。
using编译指令。这章没有细讲,但是我将它这样理解。当你编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,但是有一个潜在的问题,可能使用两个封装好的产品时候,他们都包含一个名为out()的函数。这样使用out()函数时,编译器不知道你使用的是哪个out(),名称空间让厂商能够将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出你想用哪个厂商的out()函数了。比如a厂可以将其定义放到一个名为aa的名称空间中,b厂将其定义放在一个bb的名称空间中,这样就可以用名称空间来区分不同的out()函数了。
aa::out();//使用a厂商的out
bb::out();//使用b厂商的out
再看这段代码,现在他们都被放置在std的名称空间中(仅头文件没有.h时),意味着在iostream中定义的用于输出的cout变量实际上是std::cout,因此可以省略using。
然而多数人不喜欢将引入空间名称之前的代码转换成引入空间名称之后的代码。于是using编译指令应运而生,下面的一行代码表明,可以使用std名称空间中定义的名称,而不必使用std::前缀:
using namespace std;
这个using编译指令使得std空间名称中的所有名称都可以用,但是在大型项目中有一个潜在的问题,更好的方法是,只让所需的名称可用:
using std :: cout;
using std :: cin;
using std :: endl;
使用cout进行C++输出
现在来看一下如何显示一条消息,在C语言中可能会使用如下语句:
printf("Hello world!");
在C++中,我们将使用iostream下的cout函数来进行输出:
cout << "Hello";
双引号部分为字符串即要打印输出的部分,<<符号表示该语句将把字符串发送给cout,该符号指出了信息的流动路径。cout是一个预定义的对象,知道如何显示字符串、数字和单个字符等(对象是类的特定实例,类定义了数据的存储和使用方式)。
现在来看一下C++从概念上如何解释这个过程。从概念上来看,输出是一个流,即从程序流出的一系列字符。cout对象表示这种流,其属性是在iostream文件中定义的。cout的对象属性包括一个插入运算符<<,它可以将其右侧的信息插入到流中。
控制符endl
可以简单的理解为和c语言\n效果一样,不过\n为转义序列。endl为控制符。一个差别就是,endl确保程序继续运行前刷新输出,将其立即显示在屏幕上,使用\n则不能提供这样的保证。
使用cin
可以理解为c语言中的getchar()。与cout一样cin也是一个智能对象。
这就是我的第一个CPP程序,详细的了解了C++的头文件,空间名称,cout,endl,cin。最后我使用的IDE是VS2018,强力安利一波。今后我每天都会再此更新我的CPP学习进度。
<CPP学习>第一天 第一个CPP程序 hello word的更多相关文章
- C语言搬书学习第一记 —— 认识一个简单程序的细节
#include<stdio.h> /*告诉编译器把stdio.h 中的内容包含在当前程序中,stdio.h是C编译器软件包的标准部分,它提供键盘输入和 屏幕输入的支持studio.h文件 ...
- C#.NET学习笔记2---C#.第一个C#程序
C#.NET学习笔记2---C#.第一个C#程序 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com 6.第一个C#程序: ...
- C#语言————第一章 第一个C#程序
第一章 第一个C#程序 ******************C#程序*************** ①:建立项目:文件-->新建-->项目-->c#-->控制台程 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- c++学习笔记---04---从另一个小程序接着说
从另一个小程序接着说 文件I/O 前边我们已经给大家简单介绍和演示过C和C++在终端I/O处理上的异同点. 现在我们接着来研究文件I/O. 编程任务:编写一个文件复制程序,功能实现将一个文件复制到另一 ...
- C#第一章 第一个C#程序
第一个C#程序 namespace 是C#中组织代码的方式,它的作用那个类似java中的包 using 在Java中作用如果导入其他包 应该是用import关键字而在C#中应使用using关键字来引用 ...
- Java学习 1.4——第一个Java程序:Hello World!
这一篇一起来写第一个Java程序,同时也了解一下IDEA的使用: 打开IDEA,新建项目: 选择Java,右边project SDK是选择Java版本,上一篇我们自己安装了JDK1.8,IDEA自带一 ...
- OD学习笔记10:一个VB程序的加密和解密思路
前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程 ...
- 【Python】Django学习一:第一个Django程序
项目开发环境 Python 3.6 Django 1.11.5 Django安装 在开始安装Django之前,Django更新比较频繁,所以要选择合适的版本,这里选择Django1.11.5. pip ...
随机推荐
- laravel vue.js的使用
安装cors 地址:https://github.com/barryvdh/laravel-cors 在Kernel文件中加上 protected $middleware = [ \Barryv ...
- Cass和ArcGIS交换
南方cass图形为CAD,把CAD图形转换成arcgis没有任何问题,到属性有问题,cass存放数据是放在CAD扩展XDATA中,和 arcgis导入导出CAD标准扩展属性不一样,只能二次开发使用,c ...
- Format - DateTime
1. Long Date/Short Date/Long Time/Short Time,可以在系统的“Region and Language”中找到相应设置: 2. ISO Format/Local ...
- C/C++:函数的调用约定(Calling Convention)和名称修饰(Decorated Name)以及两者不匹配引起的问题
转自:http://blog.csdn.net/zskof/article/details/3475182 注:C++有着与C不同的名称修饰,主要是为了解决重载(overload):调用约定则影响函数 ...
- Win SDK 标准程序
//-Registering window class. //-Creating window. //-Creating message loop. //-Implement WndProc func ...
- 排查在 Azure 中创建新 Linux 虚拟机时遇到的 Resource Manager 部署问题
本文内容 常见问题 收集活动日志 问题:自定义映像:预配错误 问题:自定义/库/应用商店映像:分配失败 后续步骤 尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. ...
- C语言学习之第一个程序
#include<stdio.h> int main() { printf("This is my first program!\n"); ; } 基本格式大致如下: ...
- SQL Server 2012安装配置(Part2 )
2 服务器安装 运行安装程序后,首先进入 SQL Server 安装中心.选择左侧导航树中的"安装"菜单项. 图2-1 SQL Server 安装中心 在右侧菜单中点击" ...
- Python迭代器生成器,私有变量及列表字典集合推导式(二)
1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getatt ...
- 诊断GRID无法启动问题
诊断 Grid Infrastructure 启动问题 (文档 ID 1623340.1)