当前位置: 首页 > article >正文

C++入门学习基础

1.初识C++

图片

起源

C++ 的历史可以追溯到 1979 年,当时 Bjarne Stroustrup 正在准备他的博士毕业论文,他发现面向对象的思想对于软件开发非常有用,但当时已有的 Simula 语言执行效率低,实用性不强,而 C 语言以其高可移植性和高效的底层操作备受赞誉。于是,Stroustrup 开始着手 “C with Classes” 的研发工作,这是 C++ 的前身,其目的是将面向对象的特性引入 C 语言。

命名

最初,这门新语言曾被称为 “New C”,之后又被称作 “C with Classes”。1983 年,该语言正式更名为 C++。C 语言中的 “++” 运算子的作用是对一个变量进行递增操作,这也体现了 Stroustrup 对这种新语言是基于 C 语言进一步发展的定位。

标准演进

随着时间的推移,C++ 不断发展和完善。1998 年,C++ 标准委员会发布了第一个国际标准—ISO/IEC14882:1998(C++98),标准模板库(STL)也被纳入其中。2003 年发布了 C++03 标准,对 C++98 中的一些问题进行了修订。2011 年,C++11 标准面世,引入了众多新特性,如正则表达式、标准线程库、新的 for 语法、auto 关键字等。2014 年,C++14 标准通过;2017 年,C++17 标准发布,进一步简化了语言的使用;后续还有不断更新的标准和版本在持续推动着 C++ 的发展。

2.主要特点

图片

高效性与底层控制能力

C++ 是一种编译型语言,直接被编译成机器码,执行效率非常高。这使得它在对性能要求极高的领域,如操作系统、游戏开发、实时控制系统等方面具有不可替代的地位。例如,许多大型游戏的核心引擎都是用 C++ 编写的,因为游戏运行时需要快速处理大量的图形计算和物理模拟,C++ 的高效性能能够满足这种需求。

面向对象编程

C++ 支持封装、继承和多态等面向对象的核心特性。封装将数据和操作封装在类中,提高了代码的安全性和可维护性;继承允许子类继承父类的属性和方法,实现了代码的复用;多态则使得不同类型的对象可以通过相同的接口进行操作,增加了程序的灵活性和可扩展性。通过面向对象编程,程序员可以更方便地构建大型、复杂的软件系统,提高开发效率。

强大的标准库

C++ 标准库提供了丰富的功能,包括输入输出、字符串处理、容器、算法、文件操作等。这些库函数经过了高度优化,使用起来非常方便,可以大大提高开发效率。例如,vector 容器可以动态地存储和管理元素,方便地进行元素的添加、删除和访问操作;algorithm 库中的排序、查找等算法可以快速地对数据进行处理。

02

C++学习书籍

图片

杨卫明|老师

关于作者|ABOUT THE AUTHOR

本书是作者杨卫明老师总结近20年的教学与实践经验,结合工程教育认证、课程思政、STEM教学理念和一流课程建设经验编著而成。课程内容以问题为导向,结合案例实战,通过简洁、通俗的语言,深入浅出、循序渐进地讲解课程内容。书中实例丰富、案例经典、代表性强,注重了基础知识与典型应用相结合,具有较高的系统性、实用型和可操作性,书中所有代码均在Visual Studio 2022环境下运行通过。

书籍特点|ABOUT BOOK  FEATURES

(1)以问题为导向,结合工程教育认证标准,融合课程思政和STEM教学理念,开发了丰富的线上线下混合教学资源。

(2)注重知识的逻辑性、系统性、科学性和实用性,语言通俗易懂、深入浅出,逐层递进、层层展开,循序渐进地讲解课程内容,符合教学规律,方便教师组织教学。

(3)教材实例丰富、案例经典、代表性强,把课程理论、实验实训和综合应用融为一体,解决了资源分散问题,方便教师教学和学生学习使用。

03

C++学习基础

一个简单的程序

图片

Program    

每一个C++程序都包含了一个或多个函数,其中main函数是必须的,所以一个C++程序至少含有一个main函数,操作系统通过调用main函数来执行你写的C++程序。下面就是一个简单的C++程序,只包含了一main函数。如代码所示,一个函数至少包含四个部分,返回类型、函数名、参数列表和函数体。这个main函数返回值是int,这是C++的内置类型(是由语言本身定义的), main是函数名,()中是参数列表(可以为空), 最后{ }中的是函数体,是函数执行的具体过程。在例子中只包含了一个语句,return会终止函数执行并返回一个值(0)给函数调用者,0是int类型,也就是整数。函数的返回值要与函数定义的返回类型相同,否则会产生错误,无法编译通过。

图片

例如:#include<iostream>

using namespace std;

int main()

{

     cout << "hello world" << endl;

     system("pause");

     return 0;

}

图片

    控制流

C++的控制流为while和for循环,if判断语句。

</>while 语句

当while中的判断条件为true是会循环执行while内的语句

图片

</>for 循环

图片

</>if  语句

图片

命名空间的定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字(随自己定义),然后接一对{ } 即可

{ }中即为命名空间的成员

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

例如:

图片

在上述代码中会发现,若想访问命名空间中的变量,则需要借助一个作用符 :: 这个符号叫做 域作用限定符,xnh :: rand 的意思就是,去左边这个叫xnh的域(命名空间)里面找rand这个变量。

变量

作用:给一段指定的内存空间起名,方便操作这段内存

语法:数据类型 变量名 = 初始值;

示例:

#include<iostream>
using namespace std;
int  main( ) 


      int a = 10;                                  //变量的定义
      cout << "a = " << a << endl;      //语法:数据类型  变量名 = 初始值
      system("pause");
      return 0;
}

常量

作用:用于记录程序中不可更改的数据

C++定义常量两种方式

1. #define 宏常量: #define 常量名 常量值

    • ==通常在文件上方定义==,表示一个常量

2. const修饰的变量 const 数据类型 常量名 = 常量值

• ==通常在变量定义前加关键字const==,修饰该变量为常量,不可修改

示例:

#include<iotream>

int  main() 

{      // 字面常量    

int num1 = 42;    

       std::cout << "字面常量整数:" << num1 << std::endl;    

double pi = 3.14159;    

       std::cout << "字面常量浮点数:" << pi << std::endl;    

char letter = 'A';    

       std::cout << "字面常量字符:" << letter << std::endl;    

const int constNumber = 100;    

       // constNumber = 200; // 错误,不能修改 const 修饰的常量    

       std::cout << "const 修饰的常量:" << constNumber << std::endl;                 #define MAX_VALUE 500    

       std::cout << "宏常量:" << MAX_VALUE << std::endl;    

return 0;

}

04

C++经典案例

案例1:三只小猪比体重

图片

向上滑动查看更多

运行为:

图片

案例2:水仙花数

图片

向上滑动查看更多

运行为:

图片

案例3:乘法口诀表

图片

运行为:

图片


http://www.kler.cn/a/409769.html

相关文章:

  • Oracle 11gR2 坏块修复实例一则
  • Python酷库之旅-第三方库Pandas(237)
  • 【linux学习指南】初识Linux进程信号与使用
  • Electron一些概念理解
  • 【通俗理解】边际化技巧在概率论中的应用——从公式到实例
  • 2024强网拟态决赛-eBeepf
  • C++ 编程指南06 - 不要泄漏任何资源
  • 蓝桥杯每日真题 - 第23天
  • 【C++】C++11新特性详解:可变参数模板与emplace系列的应用
  • World of Warcraft /script SetRaidTarget(“target“, n, ““) n=8,7,6,5,4,3,2,1,0
  • 深入探讨异步 API 的设计与实现
  • [C++]了解内置类型升级
  • Qt 开发笔记
  • 提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路
  • 人工智能学习框架:理论与实践的结合
  • JavaScript网页设计案例:动态交互与用户体验提升
  • 音频档案批量拷贝:专业SD拷贝机解决方案
  • C 语言复习总结记录六
  • Top 10 Tools to Level Up Your Prompt Engineering Skills
  • TCP快速重传机制为啥出现重复ACK?
  • 安全加固方案
  • opencv读写文件操作
  • 谈谈微服务的常用组件
  • 面试题分析: Unity UGUI动静分离
  • Java中使用FFmpeg拉取RTSP流
  • 『 Linux 』网络层 - IP协议 (二)