写在前面:在这个专题,我将会把自己学习Cpp的笔记整理为几个部分,与大家分享,主要的参考资料是B站上的课程链接如下:https://www.bilibili.com/video/BV1et411b73Z?p=237&vd_source=d02fb26eb2345ac42c054db0bb8d8864
主要的参考书籍是《Cpp Primer Plus》
C++融合了三种不同的编程方式:1、C语言代表的过程性语言,2、C++在C语言的基础上添加的类代表的面向对象语言,3、C++模板支持的泛型编程。使用C++的原因之一是为了利用其面向对象的特性。要利用这种特性,必须对标准C语言知识有较为深入的了解,因为它提供了基本类型、运算符、控制结构和语法规则。
面向对象编程(Object Oriented Programming, OOP)的诞生,试图让语言来满足问题的要求,其理念是设计与问题本质特性相对应的数据格式。在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。OOP编程是将数据和方法合并为类定义,这样能起到信息隐藏的作用。多态能够让你为运算符和函数创建多个定义,通过编程上下文来确定使用哪个定义。继承能够让你使用旧类派生出新类。
泛型编程(Generic Programming)是C++支持的另一种编程模式,OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型。OOP是一个管理大型项目的工具,而泛型编程提供了执行常见任务的工具。
名称C++来自C语言的递增运算符C++,该运算符将变量自加一。名称C++表明,它是C的扩充版本。
具体使用什么拓展名取决于C++的实现,
C++实现 | 拓展名 |
---|---|
Unix | C, cc, cxx, c |
GNU C++ | C, cc, cxx, cpp, c++ |
Digital Mars | cpp, cxx |
Borland C++ | cpp |
Watcom | cpp |
Microsoft Visual C++ | cpp, cxx, cc |
Metrowerks CodeWarrior | cpp, cp, cc, cxx, c++ |
#include <iostream> //预处理编译指令#include
int main(void) //主函数,程序入口
{ //函数体
using namespace std; //编译指令
cout << "Come up and C++ me some time.";
cout << endl;
cout << "You won't regret it!" << endl;
return 0;
}
为什么main()
不能使用其他的名称?因为运行在C语言、C++程序时,通常从main()
函数开始执行。因此,如果没有main()
,程序将不完整,编译器将指出未定义main()
函数。也存在一些例外情况,例如,在Windows编程中,可以编写一个动态链接库(DLL)模块,这是其他Windows程序可以使用的代码,但是DLL模块不是独立的程序,因此不需要main()
。
在C++中,分号;
标志了语句的结尾。因此,在C++中,回车的作用就和空格或制表符相同,也就是说在C++中,通常可以在能够使用回车的地方使用空格,既可以把语句放在几行之上,也可以把几条语句放在同一行上。
asm | do | if | return | typedef |
---|---|---|---|---|
auto | double | inline | short | typeld |
bool | dynamic_cast | int | signed | typename |
break | else | long | sizeof | union |
case | enum | mutable | static | unsigned |
catch | explicit | namespace | static_cast | using |
char | export | new | struct | virtual |
class | extern | operator | switch | void |
const | false | private | template | volatile |
const_cast | float | protected | this | while |
continue | for | public | throw | while |
default | friend | register | true | |
delete | goto | reinterpret_cast | try |
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
+ |
算术运算符 + + + | 3 + 2 |
5 |
- |
算术运算符 − - − | 3 - 2 |
1 |
* |
算术运算符 × \times × | 3 * 4 |
12 |
/ |
算术运算符 / / / | 4 / 2 |
2 |
= |
赋值运算符= |
a = 1 |
a = 1 |
% |
取模运算符 m o d mod mod | 10 % 3 |
1 |
++ |
单目运算符++ |
a=2;b=a++ 或a=2;b=++a |
a=3;b=2 或a=3;b=3 |
-- |
单目运算符-- |
a=2;b=a-- 或a=2;b=--a ; |
a=1;b=2 或a=1;b=1 |
sizeof |
单目运算符sizeof |
sizeof(int) |
4 |
&& |
逻辑运算符与 |
a=1;b=2; a==1 && b==2 |
1 |
|| |
逻辑运算符或 |
a=1;b=2; a==1 || b==0 |
1 |
! |
逻辑运算符非 |
a=1;a!=1 |
0 |
and |
逻辑运算符与 |
||
or |
逻辑运算符或 |
||
not |
逻辑运算符非 |
||
^ |
位运算符^ 异或 |
a=1;b=2;a=a^b;b=a^b;a=a^b; |
交换a ,b 的值 |
. |
成员访问符. 用于通过变量访问结构体成员,或访问类的成员 |
struct book mybook; mybook.name |
访问book 成员变量的name 成员 |
-> |
成员访问符-> 用于通过指针访问结构体成员,或访问类的成员 |
||
& |
取地址运算符& ,引用运算符 |
int a=2; int* b=&a |
b 代表了a 变量在内存中的存放地址 |
* |
解引用运算符* |
int a=2; int* b=&a; *b |
2 |
new |
内存分配运算符 | int* pt = new int; |
为指针pt 分配了一个int 大小的空间 |
delete |
内存分配运算符 | int* pt = new int; delete pt; |
回收了pt 的内存空间 |
, |
逗号运算符 | int i, j; |
分隔声明的名称 |
?: |
三目运算符?: |
int a = 1 > 2? 1: 0; |
a 的值为0 |
C++使用布尔常量值true、false
而无需包含任何头文件,但是C语言需要包含stdbool.h
后,才能够使用这两个布尔值常量。
C++标准提供了逻辑运算符的另一种表达方式,标识符and、or、not
都是C++的保留关键字,但是它们不是C语言的保留关键字,若C语言需要使用这种方式则需要包括头文件iso646.h
,C++不要求使用头文件。
文章浏览阅读425次。1.创建游戏物体的三种方法 public GameObject prefab; // Use this for initialization void Start () { //1.第一种创建方法 GameObject go = new GameObject("Cube"); //2.第二种 ,可以实例化特效或者角色等等 ..._unity new gameobject()参数
文章浏览阅读522次。这是 阿拉灯神丁Vicky 的第 23 篇文章1、项目背景为通过项目实战增加对知识图谱的认识,几乎找了所有网上的开源项目及视频实战教程。果然,功夫不负有心人,找到了中科院软件所刘焕勇老师在github上的开源项目,基于知识图谱的医药领域问答项目QABasedOnMedicaKnowledgeGraph。用了两个晚上搭建了两套,Mac版与Windows版,哈哈,运行成功!!!从无到有搭建一个以疾病为..._chat_graph.py
文章浏览阅读899次。Harry Potter and the Final BattleTime Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1741 Accepted Submission(s): 487Problem Descript_3986 harry potter and the final battle 枚举+最短路(删掉任意一条边的最长最短
文章浏览阅读342次。# -*- coding: utf-8 -*-#---------------------------------------# 程序:cctv节目表抓取# 作者:lqf# 日期:2013-08-09# 语言:Python 2.7# 功能:抓取央视的节目列表信息#---------------------------------------import stringimport..._python获取电视直播节目单
文章浏览阅读1.6k次,点赞5次,收藏18次。我们知道面向对象的三大特性分别是:封装、继承、多态。很多语言例如:C++ 和 Java 等都是面向对象的编程语言,而我们通常说 C 是面向过程的语言,那么是否可以用 C 实现简单的面向对象..._c语言如何实现oop编程
文章浏览阅读1k次。one-hot , multi-hot_spark df one-hot
文章浏览阅读779次。是翻译的订阅邮件,非原创,下方有英文原文。看一下这段代码:let a = 10;let b = a;a = 0;运行后a和b的值是多少?在进一步阅读之前,先理解它。如果你已经写了一段时间的js,你可能会存疑:“我每天写的代码比这有难度多了,重点是啥?”本练习的目的不是要想你介绍这些变量,相反,假设你已经十分熟悉这些,本练习的目的是为了然你构建起相应的心智模型。什么是心智模型..._justjavascrpit
文章浏览阅读276次。区块链系统中智能合约技术综述范吉立 李晓华 聂铁铮 于戈《计算机科学》2019年8月14页,56个参考文献框架1 引言2 区块链中的智能合约语言2.1 智能合约语言2.2 比特币脚本语言图2.3 以太坊灵完备型语言2.3.1 Solidity语言2.3.2 Serpent语言2.4 可验证型语言Pact2.5 超级账本智能合约语言2.6 开发语言的对比3 区块链中智能合约的实现技术3.1 嵌..._嵌入式事件驱动编程
文章浏览阅读386次。Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发1)。 简介随着Python在互联网人工智能领域的流行,大家也慢慢感受到Python开发的便利,本文就基于嵌入式ARM平台,介绍使用Python配合PyQT5模块来开发图形化应用程序。本文所演示的ARM平台..._qt for python可以写入嵌入式设备吗
文章浏览阅读108次。现在很多开源软件都提供了对应的web管理界面,rabbitmq也不例外,rabbitmq提供了一个web插件。当rabbit-server启动之后,即在浏览器中通过http://localhost:15672/地址访问页面,提供一个比命令rabbitmqctl更友好的学习rabbitmq的方式。可以简单方便的通过配置rabbitmq,并可以向exchange和queue中发消息来验证自己的理解。如..._python rabbitmq exchange_bind
文章浏览阅读5.1k次。达梦DTS工具的使用,适用于简单的数据迁移_达梦迁移工具使用方法
文章浏览阅读4.2k次。// 判断文件夹是否存在 public static void judeDirExists(File file) { if (file.exists()) { if (file.isDirectory()) { System.out.println("dir exists"); } else {_java nas 上传文件夹不存在