C++语言入门教程

简介: C++语言入门教程

一、认识 “C++语言”
一、首先聊聊什么是语言?

  语言是一套具有“语法”、“词法”规律的系统,是思维的工具。
  计算程序设计语言是计算机可以识别的语言,用于描述解决问题的方法,供计算机阅读和执行。

  语言由低级到高级依次分为4类:
     1、机器语言 (由二进制 0、1组成,面向计算机的最底层语言)
     2、汇编语言 (机器指令的符号化,类似于英语单词标记某些字符,在机器语言的基础上人性化修改的语言)
     3、高级语言 (面向过程C、面向对象C++、Java、Visual Basic)
     4、非过程化语言

二、回忆一下软件的概念?

  计算机系统包括软件和硬件。
    软件包括使计算机运行所需要的各种程序及其有关的文档资料。软件 = 程序 + 文档(软件各种说明文档) + 其他
    指令就是计算机能识别的命令。程序是这些指令的集合。程序由n条指令组成。

三、C++的诞生?

  C++是有C语言演变过来的。
    1、1973年美国贝尔实验室Dennis M.Ritchie 以B语言为基础创造出C语言
      1990年,ISO接受了C为ISO C的标准( ISO9899-1990 )
    2、由于C语言毕竟是面向过程化的编程语言,更适合开发一些代码量较少的程序,对于代码量较大的程序,C语言就显得比较吃力了,效率较低,且代码较为臃肿。这个时候就需要升级“C语言”,或者改造C语言了。
      1980年AT&T贝尔实验室的Bjarne Stroustrup博士在C语言的基础上为支撑面向对象程序开发设计出新的语言——“带类的C”
      1983年正式取名为C++,1989年开始进行标准化工作,1998年11月贝尔国际表遵化组织(ISO)批准为国际标准。

四、C++的特点?

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。      
   面向过程开发:开发中重点在过程的逻辑判断与流程标准。
      面向对象开发:逻辑判断与流程标准都被封装到类里面,作为标准的API接口,并且设置权限,有公有,保护和私有权限区别。使用时只注重该类的整体定义和调用。
C++ 三大特性: 封装,继承,多态。

C++可以完全兼容C语言的模板
 C++源代码文件: .cpp
  C++头文件: .hpp .h
  C++编译器: g++

如果需要在C++中调用C语言的接口,使用关键字extern

extern “C” {

C语言的头文件

}

二、走入 “C++语言”
复制代码

include

using namespace std; //相当于全局定义,后面所有未声明命名空间的标识符默认使用std空间

int main(int argc, char const *argv[])
{
cout << "hello world!" << endl;
//std::cout << "hello world!" << std::endl;
//如果没有声明using namespace std; 就需要加std::
return 0;
}
复制代码
程序中采用了 using 声明命名空间 std,using namespace std;这一语句涵盖了 std 命名空间中的所有标识符,而该命名空间包含 C++ 所有标准库。头文件 iostream 文件中定义的所有变量、函数等都位于 std 命名空间中,每次使用 iostream 中的变量或函数都需要在前面加上std::是非常麻烦的一件事,为此可直接用 using 声明将 std 中的所有变量或函数等都声明出来。

namespace命名空间
C++命名空间基本常识

  所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
  一 :和格式不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
    后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
  因此,
    1)当使用时,相当于在c中调用库函数,使用的是全局命名空间,那时候也没有命名空间namespace的概念,也就是早期的c++实现;
    2)当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。

  二: 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
    1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下: std::cout << std::hex << 3.4 << std::endl;
    2、使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout << std::hex << 3.4 << endl;
    3、最方便的就是使用using namespace std; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。

    就好像它们被声明为全局变量一样。那么以上语句可以如下写: cout < 和等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。
    命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"

总结:

    1、当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。若不引入using namespace std ,需要这样做。std::cout。
    2、C++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
    3、C++命名空间的定义: namespace name { … }
    4、using namespace NameSpaceA;
    5、namespce定义可嵌套。

C++的输入输出(cout和cin)
  在 C语言中,通常会采用格式化输入输出函数 printf() 和 scanf() 用于输入或输出数据或信息。在 C++语言中,C语言的这一套输入输出库我们仍能使用,但是 C++语言又自定义了一套新的、更容易使用的输入输出库。
  在 C++程序中,输入与输出可以看做是一连串的数据流,输入即可视为从文件或键盘中输入程序中的一串数据流,而输出则可以视为从程序中输出一连串的数据流到显示屏或文件中。
  在编写 C++程序时,如果需要使用输入输出时,则需要包含头文件。 中定义了用于输入输出的对象,例如常见的 cin 表示标准输入、cout 表示标准输出、cerr 表示标准错误。
  需要特别强调的是,cin、cout、cerr 不是 C++ 中的关键字,其本质是函数调用,它们的实现采用的是 C++ 的运算符重载,这些知识点将会在后续逐一介绍。其中 cout 和 cerr 的输出目的地都是显示器,但不同的是 cout 是带有缓冲的,而 cerr 则不带缓冲。
  在我们使用 cout 进行输出时需要紧接着使用“<<”操作符,使用 cin 进行输入时需要紧接着使用“>>”操作符,这两个操作符可以自行分析所处理的数据类型,因此无需我们像使用 scanf() 和 printf() 那样设置输入输出格式化语句。
复制代码

include

//1、iostream.h是旧标准,支持全局变量标准库,没有命名空间的概念
//2、现在使用新标准iostream;支持新引入的作用域
//
//3、#include <头文件> : 编译器直接去库里找
//4、#include "头文件" : 编译器先在本地找,再在去库里找
//如果使用自己定义的头文件,老老实实使用"头文件"

//#include //C语言风格

include

//5、C++在C语言头文件的基础上C++风格化,前加“c”,后去“.h”
//在C++中使用C语言的头文件,以上两种都可以,尽量使用后者,具备C++风格化的写法;

pragma warning(disable:4996)

//加上这一行是因为:
// Windows环境下需要使用strcpy_s(),Linux环境下需要使用strcpy()
// 或者标识忽略这个错误,#pragma warning(disable:4996) Windows环境下也可以直接使用strcpy()

//string.h只是为了表示如何引用C头文件,有了cstring,string.h加不加无所谓
extern "C" {

include //如果需要在C++中调用C语言的接口,使用关键字extern

}

using namespace std;
//相当于全局定义,后面所有未声明命名空间的标识符默认使用std空间

int main()
{
//cout 输出 类似 c语言的printf
//endl 类似 c语言的 换行符
// printf("Hello 你好!\n");

//cout代表的输出设备
cout << "Hello, the meal is now completed on the 54th and ready for departure!" << endl;//将字符串输出到 控制台
cout << "Please show me your pick-up number:" << endl;

//cin代表的是输入设备
int number = 0;
cin >> number;//将建键盘输入的数据 赋值给 number
cout << "number = " << number << endl;
//如果没有声明using namespace std; 就需要加std::cout / cin

char buf[128] = "";
strcpy(buf, "Wishing you a pleasant meal!");   //strcpy把含有'\0'结束符的字符串复制到另一个地址空间buf元素
cout << buf << endl;                           //Wishing you a pleasant meal!  /**buf表示数组地址对应的元素,buf是元素*/
cout << buf[0] << buf[3] << endl;              //Wh                            /**数组格式表示对于节点元素*/
cout << &buf << endl;                          //0x7fffe7c5acc0                /**整个数组的地址*/
cout << *(& buf) << endl;                      //Wishing you a pleasant meal!  /**整个数据地址对应的元素*/

return 0;

}//代码效果参考:http://www.zidongmutanji.com/bxxx/137436.html

复制代码

strcpy(buf, "Wishing you a pleasant meal!");
//strcpy把含有'\0'结束符的字符串复制到另一个地址空间buf元素

一维数组:buf[128]
buf //Wishing you a pleasant meal!   /buf表示数组地址对应的元素,buf是元素*/
buf[0] //W    /
数组格式表示对于节点元素/
&buf //0x7fffe7c5acc0 /**整个数组的地址
/
(& buf) //Wishing you a pleasant meal! /**整个数据地址对应的元素/

相关文章
|
1月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
48 2
|
1月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
46 0
|
15天前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
11 0
|
1月前
|
编译器 C++ 容器
C++语言的基本语法
想掌握一门编程语言,第一步就是需要熟悉基本的环境,然后就是最重要的语法知识。 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类 - 类可以定义为描述对象行为/状态的模板/蓝图。 方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 完整关键字
53 2
|
2月前
|
前端开发 编译器 程序员
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
|
3月前
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
3月前
|
数据安全/隐私保护 C++
C++语言深入理解类的封装与数据隐藏
深入理解类的封装与数据隐藏
|
3月前
|
C++
C++语言的lambda表达式
C++从函数对象到lambda表达式以及操作参数化
|
3月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
35 0
|
3月前
|
存储 编译器 开发工具
C++语言教程分享
C++语言教程分享