指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
包括数据抽象和行为抽象(或称为功能抽象、代码抽象)
指将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的函数代码进行有机结合,形成类,其中的数据和函数都是一个类的成员。
在保持原有类特性的基础上,进行更具体更详细的说明
指一段程序能够处理多种类型对象的能力。
了解基本类型及其常量的表示法;掌握变量的定义及初始化方法;掌握运算符与表达式的概念;掌握C++的自动类型转换和强制类型转换。
boolr(1字节),1char(1字节),int(4字节),float(4字节),double(8字节)long(4字节)
(1)整型常量
八进制整常量的数字部分要以数字0开头
十六进制整常量的数字要以0x开头
整型常量可以用后缀字母L(l)表示长整型,后缀字母U(u)表示无符号型
signed和unsigned可以用来修饰char型和int型(包括long int),不能修饰bool、float、double和long double。
故本题答案为C。
(2)实型常量
一般形式:12.5
指数形式:0.345E+2
注:以字母E或e来代表以10为底的指数。其中,e的左边是数值部分(有效数字),可以表示成整数或小数形式,它不能省略!但是小数部分和整数部分能省略其一,eg:12.E 2或1.E-3但是不能写成E-3!!e的右边是指数部分,必须是整数形式!
实型常量默认为double型,如果后缀F(f)可以使其转化为float型
对于整型数,如不采用后缀说明符,默认为int类型,L表示长整型;对于浮点数,不加后缀标识符默认类型为double类型,对于单精度浮点数要加"F"后缀。
(3)字符常量:用单引号引起来的一个字符
普通字符
转义字符
即特殊字符常量,转移字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义。
ASCII码字符
即用反斜符()开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:
(1)用字符的八进制ASCII码,表示为:\0dd.这里,0dd是八进制值(0可以省略)。
(2)使用字符的十六进制ASCII码值,表示为 \xhh或Xhh 这里hh是两位十六进制值。
eg:‘a’可以表示为’\x61’
易错:
答案:A。
解析:“A、’\xff’”,因为这虽然属于ASCII码字符,但是“ff”超出了(标准)ASCII码最大的“7f”,所以不合法。“B、’\65’”属于ASCII码字符,“C、’&’”属于普通字符,“D’\028’”属于ASCII码字符。
答案:A
解析:字母在C++语言中是以ASCII码存放的,即以整数形式存放。小写字母a对应的ASCII码是97,经过计算n对应的ASCII值是110。
注:关于’\0nnn’:如果’\0’后面跟着不是’x’的字母就代表空字符;如果’\0’后面跟着’x’并且’x’后面跟着数字,表示十六进制数,算作一个字符;如果’\0’后面跟着数字表示八进制,算作一个字符
(4)字符串常量:
存放形式:按串中的字符排列的次序顺序存放,每个字符占一个字节,并在末尾添加’\0’作为结束标记。
一个字符串常量表示存储的”数组“的首地址。
例题:
答案:D
思考题:若 char s[]=“\t\v\\0which\n”; cout<<sizeof(s);cout<<strlen(s);
注:sizeof计算的是所占的内存空间,这里计算的值为11,注意字符串末尾还有一个’\0’!!
而strlen计算的是字符串的长度,以’\0’为结束标志,因此计算的结果为3
符号常量在使用之前一定要首先声明
声明语句:
const 数据类型说明符 常量名=常量值;
或
数据类型说明符 const 常量名=常量值;
注:符号常量在声明时一定要赋初值,而在程序中间不能改变其值。
例题:
答案:B。在定义常量时(非类成员常量),必须要在定义该常量时对其进行初始化,选项B没有对常量temp进行初始化,故应选择B。
enum枚举类型
解析:C++中,定义枚举类型时,如果不指定枚举常量的值1,则以0开始依次递加,故NAME为0,NUMBER为1,由于PLUS显式指定为5,其后面的枚举常量将在该基础上依次递加1,故MINUS=6,PRINT显式指定为10。故本题答案应为A。
注:%:只能用于整型操作数
/:当用于两个整型数据相除时,其结果取商的整数部分,小数部分自动被舍弃(不满足四舍五入规则)
注:自增运算符的操作数必须是变量,不能是常量或表达式!!
**++i返回的是i本身而i++返回的是数值。**因此++(++i)是正确的而(i–)--是错误的
例题:
答案:A
作用:用于计算某种类型的对象再内存中所占的字节数。
答案:D !!!是x*y!!!!不是xy!!!!!
基本原则:将低类型数据转换为高类型数据(不遵循四舍五入原则)
形式:类型说明符(表达式)或(类型说明符)表达式
const_cast<类型说明符>(表达式)
dynamic_cast<类型说明符>(表达式)
reinterpret_cast<类型说明符>(表达式)
static_cast<类型说明符>(表达式)
了解C语句的概念及种类;掌握C语言常用的输入/出方式。
表达式
算数表达式
赋值表达式
答案:D。d++没赋值符号,不是赋值运算!!!
逗号表达式
表达式1,表达式2
求解顺序:先求表达式1,再求表达式2,最终结果为表达式2的值
逻辑表达式
逻辑表达式的结果类型为bool,值只能为true或false
条件表达式:
表达式1?表达式2:表达式3
函数prinf()的格式修饰符
l:修饰格式符d,o,x,u时,用于输出long型数据
L:修饰格式符f,g,e时,用于输出long double型数据
h:修饰格式符d,o,x时,用于输出short型数据
输出域宽m(m为整数):
若m为正整数,当输出数据宽度小于m时,在域内向右靠齐,左边多余位补空格;当输出数据宽度大于m时,按实际宽度全部输出;
当m为负整数,则输出数据在域内向左靠齐
若m有前导符0,则左边多余位补0。
显示精度.n(n为大于等于0的整数)
对于浮点数,用于指定输出的浮点数的小数位数。
对于字符串,用于指定从字符串左侧开始截取的字串字符个数。
答案:C
熟练掌握if…else的三种语法;领会switch与break语句的作用。
注:未配对的else与最近的未配对的if配对
答案:A
相当于:
void main()
{
int a=0,b=1,c=0,d=20;
if(a)
{d=-10;}
else if(!b)
{
if(!c){d=15;}
else{d=25;}
}
cout<
“一个人从哪里跌倒就再跌倒一次…”
这里相当于:
{
if(a
注:
领会程序设计中构成循环的方法;掌握for、while、do-while语句的用法;了解break、continue在循环语句中的作用。
break只能跳出一层循环。想要跳出多层循环可以用goto(不想找骂就最好别用)或者return语句。
了解一维数组、二维数组的基本概念;掌握数组类型变量的定义与引用;掌握数组元素的引用。
定义:
数据类型 标识符 [常量表达式1][常量表达式2]……;
初始化:
//1.给数组内所有元素赋值
int a[3]={1,1,1};
int a[]={1,1,1};
//2.给数组内部分元素赋值
float fa[5]={1.0,2.0,3.0}
//注:当指定的初值个数小于数组大小时,剩下的数组元素会被赋予0值。
//若定义数组时没有指定任何一个元素的初值,
//对于静态生存期的数组每个元素都会被赋值为0
//但对于动态生存期的数组,每个元素的初值都是不确定的
int a[2][3]={1,0,0,0,1,0};
int a[][3]={1,0,0,0,1,0};
int a[2][3]={{1,0,0},{0,1,0}};
掌握函数的定义与调用;掌握函数参数的传递方式;领会变量存储类型的概念及各种存储类型变量的生存期和有效范围;领会函数的嵌套调用与递归调用
易错:
答案:B 这道题目关键在f1(a+b,++b),执行这句话之前a=6,b=8;函数参数自右往左执行,即先执行++b,再执行a+b,所以相当于f1(6+9,9),故答案是15+1=16
内联函数不是在调用时发生控制转移,而是在编译时将一个函数体嵌入在每一个调用处。
内联函数应该是比较简单的函数,结构简单(没有循环等控制语句)、语句少(一般只为输出等)
定义:
inline 类型说明符 函数名(含类型说明的形参表)
{
语句序列
}
两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据类型和形参类型及个数的最佳匹配,自动确定调用哪一个函数。
注:重载函数的形参必须不同:个数不同或类型不同(不同类型相同个数的形参组合的时候,顺序不同也能作为依据)
局部变量只在调用它所在的函数时才会生效,一旦函数返回后就会失效。
在函数原型声明时形式参数的作用范围就是函数原型作用域
eg:
double area(double radius);
//radius的作用范围只在形参列表的左右括号之间
具有命名空间作用域的变量也称为全局变量
extern是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块或其他模块中使用,故extern int b;是一个声明不是定义。
了解指针与地址的概念;掌握指针变量的定义、初始化及指针的运算;掌握指针与数组、指针数组、指针实现字符串等知识;了解指针与函数的概念。
下标为i的元素:*(数组名+i)
一个字符串常量表示存储的”数组“的首地址。
答案:B。相当于比较“bcdef”和“b”。
引用是一种特殊类型的变量,可以被认为是另一个变量的别名,通过引用名与通过被引用的变量名访问变量的效果是一样的。
注:
声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象
一旦一个引用被初始化后,就不能改为指向其他对象。
实参就是形参,形参就是实参。
掌握结构体和联合体类型的说明、结构体和联合体变量的定义及初始化方法;掌握结构体与联合体变量成员的引用。
struct 结构体名称
{
共有成员
protected:
保护型类型
private:
私有成员
};
union 联合体名称
{
公有成员
protected:
保护型成员
private:
私有成员
};
类型名 变量名 = {成员数据1初值,成员数据2初值,...};
类型名 变量名={成员数据1初值,成员数据2初值,...}
原因:结构体内存分配基于内存对齐概念
联合体的全部数据成员共享同一组内存单元
了解面向对象类和对象的概念;掌握构造、析构函数的定义和使用;类的继承性。
注:在类的成员函数中,既可访问目的对象的私有成员,又可以访问当前类的其他对象的私有成员
当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建。
在创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化。
静态数据成员具有静态生存期
声明: static 类型说明符 数据成员名
访问方法:类名::标识符
注:在类中的定义中仅仅对静态数据成员进行引用性声明,必须在命名空间作用域的某个地方使用类名限定定义性声明
int Point::count=0;
声明: static 类型说明符 函数名(形参列表)
访问方式:
通过对象
Person p;p.func();
通过类名
Person::func()
注:静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态成员,必须通过对象名。
注:
你把人家当朋友,但人家不一定把你当朋友。
你朋友的朋友不一定是你的朋友。
你爸爸的朋友不一定是你的朋友。
class A{ ...... friend 函数类型 函数名 (参数列表); ......}
class A{......friend class B;//声明B为A的友元类......}
常对象必须进行初始化,而且不能被更新。
const 类型说明符 对象名;
类型说明符 函数名(参数表) const;
注:
如果在一个类中说明了常数据成员,那么任何函数中都不能对该成员赋值。构造函数对该数据成员进行初始化,只能通过初始化列表
常引用所引用的对象不能被更新
const 类型说明符 & 引用名;
构造函数的函数名与类名相同,而且没有返回值;构造函数会在对象被创建的时候被自动调用
被调用的情况:
析构函数的名称由类名前面加“~”构成,没有返回值,且不接收任何参数
class 派生类名:继承方式 基类名1,继承方式 基类名2……,继承方式 基类名n{ 派生类成员声明;};
(1)公有继承
(2)私有继承
(3)保护继承
构造派生类的对象时,就要对基类的成员对象和新增成员对象进行初始化
派生类构造函数一般语法:
派生类名::派生类名(参数表):基类名1(基类1初始化参数表),……,基类名n(基类n初始化列表),成员对象名1(成员对象1初始化参数表),……,成员对象名m(成员对象m初始化参数表){ 派生类构造函数的其他初始化操作;}
如果对基类初始化时,需要调用基类的带有形参表的构造函数时,派生类就必须声明构造函数。
在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员
虚基类声明:
class 派生类名: virtual 继承方式 基类名
虚基类及其派生类的构造函数:
class Base0{public: Base0(int var):var0(var){} int var0; void fun0(){cout<<"Member Of Base0"}<
注:建立一个对象时,如果这个对象中含有从虚基类继承来的成员,则虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。而且,只有最远派生类的构造函数会调用虚基类的构造函数。
多态需要满足三个条件:
运算符重载有两种方式:
class A{public:......返回类型 operator重载的运算符(参数表);A operator+(const A &a2) const;A operator-(const A &a2) const;};A A::opetator+(const A &a2) const{}//以此类推
class B{ public: ...... friend 返回类型 operator运算符(参数列表); friend B operator+(const B &b1,const B &b2); ......};
虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数实现的时候.
虚函数必须是非静态成员函数。
虚函数一般不声明为内联函数。
//1.满足赋值兼容class Base1{public: virtual void display() const;//2.声明虚函数};void Base1::display() const{ cout<<"";}class Derived:public Base1{public:void display() const;//一定要重写父类虚函数,不然该类仍为抽象类};void Derived::display() const{ cout<<"";}int main(){ Base1 *ptr; Derived derived; ptr=&derived;//3.父类的指针或引用指向子类对象 ptr->display();//由成员函数来调用或者是通过指针、引用来访问虚函数}
了解C++流的概念;掌握标准设备输入/输出函数的使用。
fopen(文件名,打开方式)
cout.width(10);cout<
cout<