C++笔记 01
学习C++的记录
C++基础
只是C++的基本介绍
学习笔记以 *.cpp源文件注释
的形式记录。
概念
基本术语
程序设计过程
字符
字符集
词法记号
变量
符号常量
运算符与表达式
显式类型转换
语句
其它控制语句
函数
声明
定义
调用
//概念
/*
什么是面向对象的方法?
首先,它将数据及对数据的操作方法放在一起,作为对象整体。对同类型对象抽象出其共性,形成类。类中的大多数数据只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信
面向对象的基本概念:
对象:是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。
属性:是用来描述对象静态特征的数据项。
行为:是用来描述对象动态特征的操作序列。
类:是具有相同属性和服务的一组对象的集合。一个属于某类的对象称为该类的一个实例。
封装:是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。
继承:特殊类的对象拥有其一般类的全部属性与服务,称做特殊类对一般类的继承。
多态性:多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
面向对象的软件工程是面向对象方法在软件工程领域的全面应用。包括:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。
基本术语:
源程序:用源语言编写、有待翻译的程序
目标程序:源程序通过翻译加工以后生成的程序。可以是机器语言(因此也被称为"目标代码"),也可以是汇编语言或其他中间语言表示
翻译程序:指用来把源程序翻译为目标程序的程序,翻译程序有3种不同类型:
汇编程序:把用汇编语言写成的源程序翻译成机器语言形式的目标程序
编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么该翻译程序就成为"编译程序"
解释程序:同样是将高级语言源程序翻译成机器指令。但它是边翻译边执行的,输入一句,翻译一句,执行一句。解释程序不产生整个的目标程序,对源程序中要重复执行的语句需要重复的解释执行。
完整的程序过程:
开始->程序设计->程序编辑(*.cpp)->程序编译(*.obj)->通过?(语法错)->程序连接(*.exe)(连接错)->程序运行->正确?->结束
*/
//字符
/*字符集:
英文字母,数字字符
特殊字符:!#^&*_+=-~<>/\'";.:?(){}[]
词法记号(最小的词法单元):
1.关键字:
asm auto bool break case
catch char class const const_cast
continue default delete do double
dynamic_cast else enum explicit
export extern false float for
friend goto if inline int
long mutable namespace new operator
private protected public register
reinterpret_cast return short signed
sizeof statlc static_cast struct
switch template this throw true
try typedef typeid typename union
unsigned using virtual void volatile
wchar_t while
2.标识符:
3.文字:直接使用符号表示的数据,包括数字、字符、字符串和布尔文字
4.操作符(运算符):
5.分隔符:分隔各个词法记号或程序正文,() {} , ; :
6.空白:空白是空格】制表符、垂直制表符、换行符】回车符和注释的总称
变量:先声明类型和名称,还可以确定储存类型:
auto采用堆栈方式分配内存空间,属于暂时性存储。
register存放于通用寄存器中
extern在所有函数和程序段中都可以引用
static在内存中以固定地址存放,在整个程序运行期间有效
符号常量:使用前先声明并声明时赋值。
const 数据类型说明符 常量名=常量值;
运算符与表达式:
注意&& || 运算符先判断第一个操作数,成立时再判断第二个操作数。
显式类型转换:
类型说明符 (表达式)
(类型说明符) 表达式
const_cast<类型说明符>(表达式)
dynamic_cast<类型说明符>(表达式)
reinterpret_cast<类型说明符>(表达式)
static<类型说明符>(表达式)
语句:空语句、声明语句、表达式语句、选择语句、循环语句、跳转语句、复合语句、标号语句
*/
//语句
/*
if(表达式) 语句1
else 语句2
switch(表达式){
case 常量表达式1 : 语句1
case 常量表达式2 : 语句2
default: 语句n
}//case 是入口标号,进入后顺序执行
while(表达式) 语句
do 语句
while(表达式)
for(;;){}
其他控制语句:
break 跳出循环体和switch
continue 结束本次循环开始判断是否进行下次循环
goto goto 语句标号 其中"语句标号"是用来表示语句的标识符,放在语句最前面并用:与语句分开。方便直接跳出多重循环
自定义数据类型:
typedef 已有数据类型 新类型名表;
enum 枚举类型名 {变量值列表}//若要赋值应使用强制转换
*/
//函数
/*
函数的定义:
类型说明符 函数名(含有类型说明符的形式参数){语句序列}
函数原型声明:
类型说明符 函数名(含类型说明符的形参表);只是告知编译器,并不产生任何代码
函数的调用:
嵌套调用
递归调用
函数的参数传递:
值传递
引用传递
引用:声明时初始化,不能指向其它对象
内联函数:内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处.inline 只是一个建议
带默认形参值的函数:相同作用域中,不允许对同一个参数的默认值重复定义
函数重载
两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同
编译器根据形参和形参类型及个数的最佳匹配,自动确定调用哪个函数.
系统函数
*/
//栈
/*暂略*
一般意义上的栈是一种数据结构, 它是一种能容纳很多数据的容器, 但数据进入和退出这个容器的顺序, 要满足一定的要求.
函数的形参和局部变量可以用栈存储, 这种栈叫做运行栈
运行栈中的数据分为一个一个栈帧, 每个栈帧对应一次函数调用, 栈帧中包括这次函数调用中的形参值\一些控制信息\局部变量值和一些临时数据(例如复杂表达式计算的中间值\某些函数的返回值)
*/
//示例源码
#include<iostream>
using namespace std;
class Greeting {
public:
void say() {
cout << Hello << endl;
return;
}
private:
char Hello[16] = "hello world!!!";
};
int main() {
Greeting Amy;
Amy.say();
return 0;
}
学习《C++语言程序设计》郑莉,董渊,何江舟编著