<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 ...
随机推荐
- 注解实现AOP
package com.dch.service.aop; import java.text.SimpleDateFormat; import java.util.Arrays; import java ...
- sublime Error executing: /usr/bin/security dump-trust-settings -d
sublime text2突然crash,无法简单粗暴的关闭,就开始认真解决这个问题. 问题: 参考文献:https://github.com/wbond/package_control/issues ...
- JavaScript简易动画
<p id="s">fly</p> <script> function move(){ var id=document.getElementBy ...
- Format - Numeric
1. 一些常用格式,参考链接:http://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx ; Console.WriteLine(v ...
- RePlugin 插件化-内置加载
PS:插件化是什么这里就不再说了,从这里开始两种加载方式中的一种(内置加载),该框架是奇虎360开发的,官方给出优点 RePlugin是一套完整的.稳定的.适合全面使用的,占坑类插件化方案.我们&qu ...
- 【嵌入式】安装Linux系统到开发板
一.开发板基本介绍 Flash --相当于硬盘 RAM -- 内存 Micro USB或232串口 连电脑 USB 接口连摄像头 启动方式 选择开关 :SD卡启动或NAND FLASH 启动 USB转 ...
- wxpython 简单表格控件
import wx, wx.grid class GridData(wx.grid.PyGridTableBase): _cols = "a b c".split() _data ...
- 删除排序数组中的重复数字 - C++
class Solution { public: /** * @param A: a list of integers * @return : return an integer */ int rem ...
- win7 下vs2008试用版破解
用过微软的开发套件Visual Studio 2008,如果用的是试用版本,超过90天,就会过期,出现下面这张图片显示的 下面介绍破解的步骤: 1.首先打开控制面板——然后找到卸载或更改程序——然后找 ...
- #单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(二)
学习对vue组件进行单元测试,先参照官网编写组件和测试脚本. 1.简单的组件 组件无依赖,无props 对于无需导入任何依赖,也没有props的,直接编写测试案例即可. /src/testSrc/si ...