c++程序设计读书笔记

c++学习日记

学习起因

因为某个项目c++程序移植报异常和相关优化的问题,需要重新学习一下c++,计划8个月完成入门到精通(立个flag,希望不要打脸,哈哈哈哈,今天是2023-01-30,前三章是我春节放假看得);

相关概念

类和对象
继承
多态,虚函数,rtti(运行阶段类型识别)
函数重载
引用变量
泛型(独立于类型的)编程
处理错误条件的异常机制
管理函数,类和变量名的名称空间

第一章 预备知识

面向对象的编程(oop),封装,继承,多态;术语-对象,类,封装,数据隐藏,多态,继承;
ps:泛型编程指在多种类型上皆可操作,和面向对象编程不同,它并不要求额外的间接层来调用函数,而是使用完全一般化并可重复使用的算法效率与针对某特定数据类型而设计的算法相同.概念,模型化,强化.
三种编程方式:面向对象,泛型编程,过程性编程;
计算机要处理两个概念,数据和算法;数据是程序使用和处理的信息,算法是程序使用的方法;
面向对象编程,oop强调的是数据,不像过程性编程那样,试图使问题满足语言的过程性方法,而是试图让语言来满足问题的要求,通常用于编写大型程序;
类是一种规范,描述这种新型数据格式,对象是根据这种规范构造的特定数据结构;
比如类可以描述公司管理人员的基本特征(姓名,头衔,工资,特长),对象代表特定的管理人员(副总裁,知道如何恢复windows注册表),通常,类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作;
oop程序设计方法首先设计类,他们准确地表示程序要处理的东西,例如绘图程序可能定义表示矩形,直线,圆,画笔的类.类定义描述了对每个类可执行的操作,如移动圆或旋转直线,然后可以设计一个使用这些类的对象的程序.从低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上(bottom-up)的编程.

oop强调的是编程的数据方面,泛型编程强调的是独立于特定数据类型;
c,语言简洁,适合系统编程,使用广泛且与unix操作系统联系紧密;
库,是编程模块的集合,可以从程序中调用他们;
c++增加了面向对象编程和泛型编程的支持,提高模块化和创建可重用代码,节省编程时间并提高程序的可靠性;

编译选项
-lm 指定数学库;-lg++ 链接g++库;

编译源代码:
	g++ code.cpp
cin.get();读取下一次键盘敲击;

第二章 开始学习c++

//注释,也可以使用/* */
#include预处理器编译指令
int main 函数头
using namespace 编译指令
{}函数体,指出函数应作出什么的计算机指令
cout消息显示的语句
return 结束main函数的语句;
c++程序从main函数开始执行;
iostream中的io指的是输入和输出,
头文件如果使用iostream,而不是iostream.h,则使用下面的名称空间编译指令来使iostream中的定义对程序使用:
using namespace std;
using是编译指令,名称空间让厂商能够将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间来指出想使用哪个厂商的产品;如下:
microflop::wanda(“go dancing”); //use microflop namespace version
piscine::wanda(“a fish named desire”); //use piscine namespace version
按照这种方式,类,函数,变量是c++编译器的标准组件,它们现在都被放置在名称空间std中,仅当头文件没有拓展名h时,情况才是如此;这意味着在iostream中定义的用于输出的cout变量实际上是std::cout,而endl实际上是std::endl,因此,可以省略编译指令using;使用using编译指令,可以直接使用如std命令空加中定义的名称,而不必使用如std::前缀;
<<指出信息流动的路径;cout预定义的对象;
对象是类的特定实例,而类定义了数据的存储和使用方式;
endl,一个特殊的c++符号,表示重起一行,确保程序继续运行前刷新输出(立即显示在屏幕上);\n换行符;
一行代码中不可分割的元素叫做标记(token),通常必须用空格,制表符,回车(统称为空白white space)将两个标记分开;
c++源代码风格:
每条语句占一行;
每个函数都有一个开始花括号和结束花括号,两个花括号各占一行;
函数中的语句都相对于花括号进行缩进;
与函数名称相关的圆括号周围没有空白;
前三条规则旨在确保代码清晰易读;第四条规则帮助区分函数和一些也使用圆括号的c++内置结构;
所有变量都必须声明,指出要存储的数据类型和程序对存储在这里的数据使用的名称,分配内存空间;
程序中的声明语句叫做定义声明(defining declaration)语句,简称为定义(definition);
赋值语句从右向左进行;
类是用户定义的一种数据类型;要定义类,需要描述它能够表示什么信息和可对数据执行哪些操作;类定义描述的是数据格式及其用法;而对象是根据数据格式规范创建的实体;比如类好比所有著名演员,则对象就好比某个著名的演员;表示演员的类中包含该类可执行的操作的定义;
ps:类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创建的实体;
声明语句,赋值语句,消息语句,函数调用,函数原型,返回语句;

第三章 数据处理

变量名规则,如差旅费,应将其命名为cost_of_trip或costOfTrip,必须遵守几种简单的c++命名规则:
在名称中只能使用字母字符,数字和下划线;
名称的第一个字符不能是数字;
区分大写字符和小写字符;
不能将c++关键字用作名称;
以两个下划线或者下划线和大写字母打头的名称都被保留给实现(编译器及其使用的资源)使用,以一个下划线开头的名称被保留给实现,用作全局标识符;
c++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制;
如果想使用两个或更多的单词组成一个名称,通常的做法是用下划线字符将单词分开,如my_onions,或者从第二个单词开始将每个单词的第一个字母大写,如myEyeTooth;
四种类型int ,short ,long ,long long都是符号类型;
#include #define 预处理器编译指令;
c++还有另一种变量初始化语法:
int wrens(123);
c++11初始化方式:
int hamburgers = {24};
int emus{7};
int rocs = {}; //set rocs to 0;
注意,unsigned = unsigned int;
整形变量的行为就像里程表,如果超越了极限,其值就将为范围另一端的取值;c++确保了无符号类型的这种行为,但c++并不保证符号整形超越限制(上溢和下溢)时不出错;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打工人1379号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值