| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 第一章 从C到C++ -> 正文阅读 |
|
[C++知识库]第一章 从C到C++ |
? ? ? ? 读前须知:本文主要针对有过一定C语言基础的同学,默认大家已经熟悉C语言的基础语法,指针,结构体等特性,在此基础上学习C++;因此将关注C++的新特性,较为基础的知识将不再赘述。 1、C++对C的增强? ? ? ? 针对大规模软件开发问题,C++编程语言被开发出来。C++兼容C,并在以下两方面对C语言进行扩充
2、最简单的C++程序结构? ? ? ? 在C语言中可以通过函数,主函数,结构体的方式编写程序;在C++中仍然适用;大部分语法完全一致;对于作用域标识符{}的限制不再要求严格,但在一些条件控制,嵌套循环中还是需要严格使用{}标识作用域;下面来看一个最简单的C++程序,它包含了一些常见的操作。
? 以此段程序为例说明一些基础知识。 2.1程序注释? ? ? ??
?2.2预处理命令? ? ? ? 以之前的程序为例
? ? ? ? 以#开头的指令,在预编译阶段执行,做代码文本替换工作,包括 库包含 和 宏定义 2.2.1库包含
? ? ? ? #include 也可以将另一个.cpp文件导入,在编译时直接把那个.cpp文件粘贴到这个位置上。通常把类定义、成员函数的编写、主函数分成三个文件写,就是通过这种方式。(有种import的感觉但又不完全是)? 2.2.2宏定义
2.3命名空间? ? ? ? 注意到这句话
? ? ? ? 命名空间的设计是为了解决可能的不同源文件重名,变成可执行文件时出错的问题 ? ? ? ? 这里的std就是C++中所有标准库的命名空间。std中也包含者之后会提到的输入与输出cin、cout,因此在使用这两个函数时也需要加上命名空间:
? ? ? ? 但这样写会很麻烦,在整个程序中频繁的使用会增大无聊的coding,因此可以用using namespace std;来说明使用了std这个命名空间,之后直接使用cin、cout即可。 2.4输入和输出? ? ? ? 在C中我们使用printf(),scanf()等函数进行输入输出,由于要记住一大堆的格式化字符串来输出,让人很头大;C++中为我们提供了更加简单的手段,那就是cin 和 cout
? ? ? ? 可以看到,无论什么类型的数据,只需 cout<<data 即可自动识别并输出。还要注意的是 >> 和 >> 这两个新的操作符。并且十分易于阅读、组装输出内容。具体使用大家自行操作一下很快就能明白。 ? ? ? ? 注意到 endl ,这个特殊的保留字段是C++的换行标识符,当使用cout<<endl时,会让输出结果换行。区别C中的\n。 ? ? ? ? 当然兼容C,printf()和scanf()仍然适用。? 3、类? ? ? ? 在C中允许用户使用struct结构体来自定义数据类型,当然C++中也能使用,且在数据结构方面的程序中大量使用。C++中提供了类似的自定义功能,那就是类。 ? ? ? ? 类的功能远不止自定义数据类型,它是C从面向过程编程到C++面向对象编程的重要标志,在之后会详细讲解。
????????这里简单对类和对象进行说明,有个大致的印象:在源文件中定义类,通过实例化获得对象。类相当于描述了一个事物应该具有什么属性,能干什么;对象则是具体到一个实例上,拥有这个实例的详细参数,可以进行操作达成目的。
4、内置(内联)函数? ? ? ? 在C++中,提供了内置函数这一新特性。使用inline关键字来标识函数,使之成为内置函数。在程序执行时,当遇到一般的函数调用,数据流将跳转到函数体,执行相应的函数操作,再将返回值带回(或者不用返回),接着执行下面环节。但这样势必造成所需时间的增加。内联函数的出现允许一些短而频繁使用的函数在编译时直接将操作写在调用位置,无需跳转,加快了程序运行的速度。任何函数都可通过增加inline关键字变成内置函数,但推荐将短而频繁使用的函数变成内置,不然源文件可就太丑了...例如:
5、函数的重载? ? ? ? 这个特性很重要,这个特性很重要,这个函数很重要。 ? ? ? ? 说三边,体现重要性蛤...函数的重载允许C++中两个不同的函数使用相同的名称,然后根据形参的不同、返回值类型的不同来自动识别究竟该调用哪个函数。最简单的,对于比较两个类型的最大值Max(),在int和double两个不同的类型调用时就可以不必编写两个不同名称的函数,简化了思维。 ? ? ? ? 同时,对于类内的一些函数,如构造函数,操作符等也都能进行重载,之后会详细说明。 ? ? ? ? 根据参数,返回类型来区别到底是哪个重载,也决定了C++在声明函数时,必须是完整的声明,不能像C中那样不给参数声明。
6、变量的引用????????先思考一个问题:当我们把实参传给一个函数的形参时,在函数里的操作针对的是实参还是形参?相信大家都知道,是形参。就比如交换两个变量的值这个函数,在C语言中我们是通过指针实现的。
????????只有通过这样 ,才能使得两个内存中的数据进行交换 ?????????如果不使用指针,直接把实参传递到形参,则把实参的数据拷贝到形参所代表的内存空间里,在操作后原本的实参没有变化。因此需要传递指针,对内存空间上的数据进行修改。 ? ? ? ? 但是类似的指针操作过于繁琐,也不利于程序的可读性。因此C++提供了一个新的特性:变量的引用。 ? ? ? ? 先来看下怎么引用
? ? ? ? 这个没有任何意义的函数里演示了如何建立引用。就是通过
? ? ? ? 这个引用相当于是变量的别名,对于引用的修改会直接作用到变量的内存空间,相当于两个变量共享同一内存空间。 ? ? ? ? 那么对于上面的swap函数就可以写成这样?
? ? ? ? 代码瞬间简单多了? 7、C++程序的编写与实现???????? ?8、总结? ? ? ? 以上是C++与C的一些基础知识,可以帮助大家快速从C过度到C++,但这只是冰山一角。在接下来的blog中将重点讲解C++的特性。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 12:53:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |