《侯老师C++面向对象开发》从入门到“入土”(一)
目录
一、需要的语言基础
1.1变量(Variables)
1.2类型(types)
1.3作用域(scope)
1.4循环(loops)
1.5流程控制/判断(judge)
1.6、了解程序需要编译、连接才可运行
1.7、使用工具进行编译(避免shell型)
二、程序的基础分类
Object Basde(基于对象)
Object Orented(面向对象)
三、Download课件
四、C++历史与演化
4.1 C++历史演化
4.2 C++版本更替
五、相关书籍
六、std::cout与cout的基本区别
一、需要的语言基础
1.1变量(Variables)
变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
1.2类型(types)
bool:存储值为true/false
int main() {bool a = true; //这里可以自己尝试改成数字,会提示Error,自动变更为truestd::cout << a << std::endl;return 0;
}
char:通常为字符(8位),整数类型
//这里比较明确的将声明与赋值拆开来,运行后结果为s
//这里要理解的是char存储标准ASCII标准字符,115为s
int main() {char a;a = 115;std::cout << a << std::endl;return 0;
}
int:定义一个整型变量
//这里注意的是对int而言,其大小为32位有符号整型
int main() {int a = 1234567890;std::cout << a << std::endl;return 0;
}
这里只写了三个最基础的,建议自己进行实际操作进行理解,除此以外还有:
float(单精度浮点值。1位符号,8位指数,23位小数)
sign(1bit)---exponent(8bits)---fraction(23bits)
double(双精度浮点值。双精度是1位符号,11位指数,52位小数。)
sign(1bit)---exponent(11bits)---fraction(52bits)
sturce、void、wchar_t等等。C++ 也允许定义各种其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等
1.3作用域(scope)
字面理解作用域是一个区域,也就是代码区域,一般来说有变量根据作用域不同可以分为三种,也可以说分三个地方可以定义变量。
· 在函数或某个代码块内部声明的变量,称为局部变量。
· 在函数参数定义中声明的变量,称为形式参数(形参)。
· 在所有函数外部(include之后定义)声明的变量,称为全局变量。
Tips:注意在函数内部即main中的局部变量与全局变量名相同时,输出为main中局部变量值,全局变量值会被覆盖。
#include<iostream>
using namespace std;int g = 10; //全局变量声明int main(){int b = 10; //局部变量声明int g = 20; //可以自己注释看一下Tips效果cout << a << endl;cout << a << endl;return 0;
}
全局变量时,系统会自动初始化为下列值(可以试试Clion/Vscode的提示就明白了):
int | 0 |
char | '\0' |
float |
0 |
double | 0 |
pointer | NULL |
1.4循环(loops)
while:只要给定的条件为真,while 循环语句会重复statement语句。可以理解为当符合condition条件时,就一直循环执行statement语句。condition可以为任意表达式,任意非0为真,statement()可以是单独的执行语句或者几个执行模块。
while(condition)
{statement();
}
除此之外还有for循环、do---while循环、嵌套循环(字面理解套娃结构//狗头//)
对循环的打断或者说控制语句包括熟知的break、continue、goto。
1.5流程控制/判断(judge)
这里说流程控制,我更习惯称为判断(judge),包含if、if---else、嵌套if、switch、嵌套switch。
// 这里以if---else为例
#include <iostream>
using namespace std;int main() {int a ;cout << "请输入a的值,a=" << endl;cin >> a;int b;if (a > 20) {cout << a << endl; }else {b = a - 5;cout << b << endl;}return 0;
}
1.6、了解程序需要编译、连接才可运行
1.7、使用工具进行编译(避免shell型)
常用的Vim(Linux命令行改一个小东西还是常用的)、Vscode、Pycharm、CLion等等。
二、程序的基础分类
Object Basde(基于对象)
--class without pointer members(无指针)
----Complex
--class with pointer members(有指针)
----String
Object Orented(面向对象)
--继承(inheritance)
--复合(composition)
--委托(delegation)
面向对象程序设计(Object-Oriented Programming,简称OOP)
三、Download课件
(可在Github中搜索自行下载,搜索关键字自行百度)
complex.h
complex-test.cpp
string.h
string-test.cpp
oop-demo.h
oop-test.cpp
四、C++历史与演化
4.1 C++历史演化
· B语言(1969)
· C语言(1972)
· C++语言(1983)(new C ---> C with Class ---> C++)
· Java语言
· C#语言
当然除C++外还有我们熟知的Python、JavaScript。
4.2 C++版本更替
C++ 98 (1.0)
C++ 03 (TR1,Technical Report 1)
C++ 11 (2.0)
C++ 14
C++ 17
C++ 20
这里我们要说的是不仅仅关注C++这门语言,更要关心C++的STL(标准库)。
STL英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。
五、相关书籍
C++ Primer
C++ Primer Plus(正在看)
Effiective C++
STL源码剖析
六、std::cout与cout的基本区别
以1.5流程控制/判断(judge)为例
std是C++的标准库(STL) 命名空间, C++标准里的所有函数,类等都定义在std里。
示例一、
如果在程序开头未有"using namespace std;"那么在下列程序中就是这么写,表明在程序每次cout时都要对其进行说明(::作用域运算符)
#include <iostream>int main() {int a ;std::cout << "请输入a的值,a=" << std::endl;std::cin >> a;int b;if (a > 20) {std::cout << a <<std::endl;}else {b = a - 5;std::cout<< b <<std::endl;}return 0;
}
示例二、
在程序开头加入"using namespace std;"后,等同于在下方程序中默认使用std的标准库命名空间,实际上与示例一没有区别。
#include <iostream>
using namespace std;int main() {int a ;cout << "请输入a的值,a=" << endl;cin >> a;int b;if (a > 20) {cout << a << endl;}else {b = a - 5;cout << b << endl;}return 0;
}
下一章:(二)C++头文件与类的声明
《侯老师C++面向对象开发》从入门到“入土”(一)相关推荐
- UE4 开发从入门到入土
本文仅代表个人观点,与任何组织立场无关. 这是一篇引导性的文章,并不会涉及非常深度的解析,其目的并非全面否定这个引擎,而是在盲目跟风的潮流中让并不是很了解这个引擎的人率先了解这个巨大的引擎中存在的史诗 ...
- 《我的世界基岩版》资源包开发从入门到入土(一切的一切之前) EP1
众所周知 emm-- 我不是营销号啊!!! --------------------- 好了不开玩笑了 正片开始 ────────────────────── 我的世界,一个远古的游戏 早在2009年 ...
- 面向对象C#初级入门精讲(1)C#开发入门-徐照兴-专题视频课程
面向对象C#初级入门精讲(1)C#开发入门-438人已学习 课程介绍 [教学理念] 1.把"需要工作的人"变成"工作需要的人" 2.创设&quo ...
- 《C++ 开发从入门到精通》——第2章 C++的重要特质分析2.1 什么是面向对象(object-oriented)...
本节书摘来自异步社区出版社<C++ 开发从入门到精通>一书中的第2章,第2.1节,作者: 王石磊 , 韩海玲,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第2 ...
- 侯捷-C++面向对象高级开发(操作符重载与临时对象)
侯捷-C++面向对象高级开发(操作符重载与临时对象) 1.操作符重载与临时对象 任何成员函数有一个隐藏的this pointer指向,指向调用者. 传递者无需知道接收者是以什么形式接收 就比如下面方框 ...
- ROS入门——胡春旭老师《机器人开发实践》在ROS-Melodic下的编译
入门ROS系统,网上接触到的资料大部分都跟古月有关,故买来胡春旭老师(古月)的书籍<机器人开发实践>拜读.书中对仿真以及真实机器人同步做介绍,能一步一步跟着操作下来,非常适合入门.但由于书 ...
- 侯捷-C++面向对象高级开发(头文件与类的声明,构造函数,参数传递与返回值)
侯捷-C++面向对象高级开发 1.头文件与类的声明 Object Based:面对的是单一的class的设计 Object Oriented:面对的是多重classes的设计,classes和clas ...
- 侯捷-C++面向对象高级开发(三大函数:拷贝构造,拷贝赋值,析构)
侯捷-C++面向对象高级开发(三大函数:拷贝构造,拷贝赋值,析构) 三大函数:拷贝构造,拷贝赋值,析构 第一个是拷贝构造,第二个是拷贝赋值 编译器有一套默认的东西实现这俩东西,可用到complex的实 ...
- 侯捷老师-02面向对象高级编程
侯捷老师-02面向对象高级编程 1.Static使用 Static本质 Static使用 Static使用举例-单例模式 Static使用举例-单例模式(改进) 2.模板使用 Class Templa ...
最新文章
- 建立循环单链表(头插法)
- D2 日报 2019年1月2日
- win7笔记本电脑如何分割和重命名磁盘
- 金士顿 8G u盘 红色 量产记录
- Android 循环滚动控件ViewFlipper,可实现跑马灯或轮播图效果
- asp.net 使用my97 datepicker实现前后两个日期的范围界定
- [剑指offer][JAVA]面试题第[05]题[替换空格][StringBuilder/Buffer]
- highCharts文档与演示效果的使用 - 文档(应用型)解读
- 宝塔自助建站系统源码v8.0
- Java基础学习总结(117)——Feign入门使用详解
- 浅析gcc、arm-linux-gcc和arm-elf-gcc的关系-转
- [原]Java程序员的JavaScript学习笔记(1——理念)
- 计算机关机 休眠睡眠有什么区别,电脑“关机”、“睡眠”、“休眠”三者区别是什么...
- 遥远记忆中的美好时光
- poscms统计数据调用
- 2021年“上海区块链周”参会随感(二)2021-04-12
- Word使用中遇到的一些错误与解决办法,附2016版本office的安装方法
- 解决jupyter中matplotlib中文乱码问题
- 区块链技术与应用-BTC
- 微信小程序——获取openid
热门文章
- 计算机excel猪肉价格分析,2019年猪肉价格走势分析报告.pdf
- 蚂蚁金服的“野心”:要做新一代世界级金融科技供应商
- 使用Python对图像进行不同级别量化QP,使用RLE计算压缩比,并计算对应的PSNR
- xctf攻防世界 MISC高手进阶区 simple_transfer
- html 中文字体文件太大,【字蛛】如何压缩体积大的中文字体包
- 神州信息:激活数据生产力 支撑强农富民
- 图扑数字孪生空冷机组,助推智慧电厂拥抱“双碳”
- Java实现Token的生成与验证
- [转]String.prototype使用
- 网络空间测绘——MQTT服务篇