面向对象编程语言把事物看成是具有属性和行为的对象,通过抽象出属于同一类的事物的属性和行为,形成类。通过类的继承和多态可以很好的实现**复用,提高软件开发效率。将数据(属性)和处理数据的方法(行为)放到一个整体里,这个整体就叫对象,同类型对象抽象成类,类中大部分数据只能用本类中的方法处理,类通过简单的外部接口与外界发生关系,而内部的各种关系对外界是透明的。
面向对象的几个基本概念:
1. 对象:每个对象都是描述客观存在事物的一个实体,都是由数据(属性)和处理数据的方法(行为)构成。属性描述事物特征,行为描述对对象属性的一些操作。
对象(实物)=属性(数据)+行为(操作方法)
2. 类:类是具有相同属性和行为的一些对象的集合。它为所有属于这个类的对象提供抽象的描述。
类=对象的集合。
3. 封装:封装就是把对象的所有属性和行为结合成一个独立地单位,对外隐藏对象的内部细节,只保留几个与外界联系的接口。
4. 继承:一个类(子类)可以通过继承另一个类(父类)来拥有另一个类的所有属性和行为。
5. 多态性:多态性就是说父类中的属性和行为被子类继承之后,子类可以有自己不同于父类的属性和行为。(这里看貌似子类可以比父类更强大)
二进制、十进制、八进制、十六进制。
计算机数据的存储单位:
位:数据的最小单位,表示一位二进制数据。
字节:由八位二进制数据组成。
字:位的组合,作为一个独立地信息处理单元。取决于机器的类型、字长及使用者的要求。常用的固定字长有8位、16位、32位等。
机器字长:机器字长是一个与机器硬件指标有关的单位,一般指参加运算的寄存器所含有的二进制的位数,它代表了机器的精度,如32位、64位等,就是我们常说的32位机器还是64位机器。
程序开发过程中的几个基本概念:源程序、目标程序和翻译程序。
源程序就是我们用各种语言编写的**,可以是汇编语言或高级语言等其他语言所写。目标程序是经过翻译之后生成的程序,可以用机器语言表示,也可以是汇编语言等其他中间语言表示。例如我们所写程序编译之后的obj文件就是目标程序。
翻译程序就是把源程序翻译成目标程序的程序。翻译程序有三种类型:汇编程序(将汇编语言源程序翻译成目标程序的翻译程序)、编译程序(将高级语言源程序翻译成目标程序的翻译程序)和解释程序(同样用于翻译高级语言,但它是输入一句,翻译一句,执行一句,直到整个源程序被翻译执行完毕,效率较低)。
我们通过利用翻译程序将源程序转换为可执行的目标程序。
msdn是vs2010的帮助文件。
解决方案资源管理器中我们可以看到所有的头文件(.h后缀)和源文件(.cpp后缀)构成的树。
一个解决方案当中可以包含多个工程。类视图显示了每个工程projection中的每个类,同样采用树状结构。资源视图显示了界面工程中使用的一些界面资源。
底侧标签中的output为输出视图,用来输出程序运行信息和调试信息。还有find result视图,用来显示搜索的结果。
几种常见的工程类型:win32 console application是win32控制平台程序;mfc application是mfc应用程序;win32 project是win32程序;empty project是空程序;mfc dll用来建立生成动态链接库的工程。win32 console application工程只能提供一个dos命令行界面,它的入口是main函数,而win32 project的入口是winmain函数。
#include<>这里包含的头文件是c++标准库里声明输入输出有关信息的头文件。
c++程序当中必须有且只能有一个main函数,它是程序执行的入口。
关键字:关键字是c++预定义的一些单词,我们定义的变量和常量不能与关键字重名。tips:
cin和cout实际上并不是关键字,而是在c++标准库中预先定义的标识符,可以对它们进行重定义。
标识符:标识符是我们自己定义声明的单词,用来命名一些实体,如函数名、变量名、类名、对象名等等。标识符的构成规则:
1.只能由字母、数字和下划线组成;2.数字不开头;3.
不能与c++关键字重名。c++区分大小写;c++标识符没有长度的限制,但具体的编译器会忽略一定长度之后的所有字符。约定:
针对面向对象编程,约定采用大小写混写的方式,变量首字母小写,词界采用大写字母标志,如:topspeed。
文字:指在程序中用符号表示的数据,包括数字、字符、字符串和布尔文字等。
空白:编译器分析**时会将**分成词法记号和空白,空白包括空格、制表符、换行符和注释。
c++的数据类型:
c++的基本数据类型有bool、char、int、float、double.有几个关键字signed和unsigned、short(占2字节)和long(占4字节)起修饰作用。
所谓常量就是在程序运行过程中值始终不会改变的量,就是直接用文字表示的值。常量又包含整型常量、实型常量、字符常量(包含转义字符)、字符串常量和布尔常量。
在使用之前必须先声明变量的类型和名称。变量名也是标识符,需要遵循标识符的命名规则。变量赋初值的一种特殊形式:
int num(3); tips:c++当中变量的声明和定义是不同的,声明一个变量仅仅是引用该变量的名字和类型,而定义一个变量会为该变量分配存储空间。
常量除了可以用文字表示之外,还可以给常量起名字,即符号常量。声明之后这个符号常量就代表了那个常量。声明形式:
const 数据类型说明符常量名=常量值或者数据类型说明符 const 常量名=常量值;例:const float pi=3.1415926; 或 float const pi=3.
1415926;
c++没有表示字符串的基本类型,但是提供了string类用于对字符串进行各种操作和处理,要使用string类就必须在程序中引入string库:include ;string类的使用方法与基本数据类型相同:string fruit; fruit=”duration”;
求余运算符“%”的操作数必须是整数,例如5%2=1,求余运算符的优先级与“/”相同。
如果除运算符“/”两边的操作数为整数,则结果的小数部分将被舍掉,例如3/2=1
这里其实是一个运算结果与运算操作数类型的关系,运算结果的数据类型与操作数当中较为高级的类型保持一致,例如两个操作数当中,一个为double、一个为int,则运算结果的类型为double,上例中两个int型操作数的结果也一定会是int型,不可能产生double型,而且结果不会四舍五入,只会直接将小数点后的部分舍掉。
注意:在一个表达式中如果”/”号两边的操作数都是整型的常数,那么该除法得到的结果仍然只能是整型。eg:
number = 1/3)*3; /即使number的类型为double,最终number也等于0,因为1/3的结果为零。正确写法应该是number = 1.0/3)*3;
自增自减运算符:自增自减运算符有两种方式:n++是先返回n的值,再使n+1;++n则是先使n+1,再返回n的值进行使用,此时n的值已经完成了+1。
注意:自增自减运算符只能用于单个变量,不能用于表达式。例如(x+y)++是非法的表达式。
赋值表达式的类型是等号左边对象的类型,赋值表达式的值也是等号左边对象将被赋值后的值,赋值运算符的结合性是自右向左。
左值和右值:左值是指出现在赋值运算符左边的各种类型的变量,右值是指出现在赋值运算符右边的各种可求值表达式。
逗号表达式的值为最右边那个表达式的值。例如:a=1*2,a+3; 则从左向右开始依次计算表达式的值,最终逗号表达式的值为5。
关系运算符:<、其中前四个比较运算符的优先级高于后两个。关系表达式的值只能是true或false。
逻辑运算符包括!、&优先级依次降低。逻辑表达式的值只能是true或false。
条件运算符是c++中唯一一个三元运算符。形式为表达式1?表达式2:表达式3;表达式2和表达式3的类型可以不同。条件表达式的类型为表达式2和3当中较高的类型。
sizeof运算符用来计算某个对象在内存中占用的字节数。使用形式为:sizeof(类型名)或sizeof(表达式)。
(按位与)、|按位或)、^按位异或:对应位不同才为1)、~按位取反)、<左移运算:将一个数的二进制值向左移位,左移后,低位补0,高位舍弃。
例如a<<2就是将a的二进制数左移两位)、>右移运算:右移后,低位舍弃,高位补符号位)
隐式类型转换:当操作数类型不同时自动进行的操作数由低到高的转换,隐式转换是安全的,不存在精度损失。各类型从低到高依次为:
char、short、int、unsigned int、long、unsigned long、float、double。
强制类型转换:c++提供6种不同的类型转换方式,其中有4中类型转换是新的c++标准当中给出的。下面分别介绍新旧类型转换方式:
旧的类型转换方式:(类型说明符)表达式。 类型说明符(表达式)
新的类型转换方式:static_cast(expression) /最常见,等价于两种旧的转换方式。
const_cast(expression) /用于去除变量的const属性。
dynamic_cast(expression) /将一种类型安全地转换为派生类型,常用于继承层次当中。
reinterpret_cast(expression) /含义与具体的编译器有关,在此不做讨论。
对于类型转换值得注意的几点:1. 类型转换表达式是生成一个新的变量,而并不对原变量造成任何改变;2.
不同类型之间类型转换的实现规则:int->float/double——在原变量数值之后加小数点和0、float/double->int——直接舍去小数点后的所有位,不进行四舍五入;
运算符的结合性是指一个双目运算符在进行计算时,如果两边的操作数为表达式,那么应该先计算哪边的表达式。又称为运算符的子表达式求职顺序。
在c++当中,有些运算符并没有严格定义结合性,例如+、-等运算符的结合性在不同的编译器当中不同,通常都为左结合性;而有些运算符则定义了严格的结合性,如&&、和逗号运算符都是左结合性,即按照从左到右的顺序计算子表达式的值。
C学习笔记 个人
foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素。该循环的运行过程如下 每一次循环时,从集合中取出一个新的元素值。放到只读变量中去,如果括号中的整个表达式返回值为true,f...
c语言学习笔记
一元二次方程详解。不管我们写什么样的程序,首先要建起构架。c语言的构架是 include intmain void 我们首先需要把三个系数保存到电脑里面,怎么保存呢?我们会以变量的形式保存到电脑里面。比如说 inta 1 intb 2 intc 3 这个 的意思是赋值的意思,不是相等的意思。什么叫变...
C语言学习笔记
a.1.需要成对敲入的符号。2.文件名不要出现。号,否则无法生成。c或。cpp文件,所以不能编译和运行。3.分号 代表一个语句,只有一个 的语句是空语句,所以下面的 不会报错,但表示若条件成立只执行空语句,并且条件语句结束 if a b 等价于 if a b 空语句。4.格式化输出中,建议用 x输出...