1 面象相关概念:
类:具相属性行象集合数操作封装起
象:数+操作
面象特征:抽象封装继承态
2输入输出:输入cin>>a>>b输入endl 输出cout<3const修饰符:
l 指常量指针:const char *pabcd允许改变指针指常量p[3]’x’错误改变指针p值pmn
l 常指针:char *const p abcd指针身常量移动指容变量更改p[3]’x’
l 常数成员常成员函数常象:类中声明数函数常量常数成员初始化列表初始值C++类中const关键字修饰象成员函数const象修改常象调常成员函数调普通成员函数
常成员函数格式:类型说明符 函数名(参数表)const常成员函数参加重载常成员函数更新象数成员调该类中普通成员函数const成员函数修改数成员
4联函数:函数说明前冠关键字inline目消函数调时系统开销提高运行速度
注意:
联函数体循环语句switch语句
联函数声明必须出现联函数第次调前
类结构中类说明体定义函数联函数
5带缺省参数值函数:说明函数原型时形参指定缺省值调时出实参采实参值否采预先出默认形参值某类point构造函数原型point(int x1 int y0)参数xy缺省值10
注意:
函数原型中缺省值参数必须右左缺省函数调时左右实参形参结合point(int x1 int y0) {XxYy}执行point p(3)pXY值分30
6函数重载:C++允许功相函数相作域相函数名声明形成重载
注意:
重载函数形参必须 数类型编译程序根实参形参类型数
ri&j错误
引作形参作传址调效果指针样void swap(int& a int& b) {}
引址符区:引运算符仅声明带引运算符&普通变量样场合&址操作符
8作域标识符()果希局部变量作域名全局变量该变量前加a代表全局变量
9newdelete
运算符new存分配基格式:指针变量new 类型名该语句程序运行时存储区中程序分配类型名字节空间该空间首址存指针变量中
运算符delete释放new分配存储空间基格式:delete 指针名
说明:
l new分配象初始化newdelete重载
l new分配空间结束应该delete显式释放否回收变成死空间
l new数组动态分配存:指针变量new 类型名[标值]int *pnew int[10]
释放时:delete []指针变量名delete []p
l new简单变量分配存时时进行初始化指针变量new 类型名(初始化列表)
int *pnew int(10)
10类种户定义类型声明形式:
class 类名称
{
public
公成员(外部接口)
private
私成员
protected
保护型成员
}类成员中缺省访问方式私
l 公类型成员:关键字public面声明类外部接口外部函数访问公类型数函数
l 私类型成员:关键字private面声明允许类中函数访问类外部函数访问果紧类名称面声明私成员关键字private省略
l 保护类型:类定义中说明protected数成员称保护成员保护数成员具双重作:派生类言公外部程序言私
l 类成员:成员数般变量声明相需放类声明体中成员函数类中说明原形类外出函数体实现函数名前类名加限定直接类中出函数体形成联成员函数
l 类象该类某特定实体类类型变量声明形式:
类名 象名 例:Clock myClock
l 类中成员访问方式:类中成员互访:直接成员名 类外访问:象名成员名象指针名>成员名方式访问 public 属性成员
11构造函数
构造函数作象创建时特定值构造象者说象初始化特定状态
特点:
l 象创建时new类名时系统动调
l 果程序中未声明系统动产生出默认形式构造函数程序中定义构造函数系统动生成缺省构造函数
缺省构造函数 类名::缺省构造函数名(){}
l 函数名必须类名相
l 指定函数返回类型
l 参数参数带默认形参值类构造函数构造函数重载类A执行语句A a时动调该类参构造函数缺省构造函数带默认形参值构造函数参构造函数带默认形参值构造函数二者时出现容易出现调时引起二义性
l 允许联函数
利构造函数创建象两种方法:
l 构造函数间创建象:类名 象名(实参表)point p(12)
l 利构造函数创建象时通指针new实现:
类名 *指针变量new 类名(实参表)
A *pnew A(12)注意类A声明象指针调构造函数通new创建时象调构造函数该语句调构造函数1次
12拷贝构造函数
拷贝构造函数种特殊构造函数形参类象引作已存象初始化类新象
类名(类名 &象名)拷贝构造函数 类A拷贝构造函数: A (A &x)
拷贝构造函数特点:
l 构造函数函数名类名相没返回值
l 参数类象引类重载
l 类拷贝构造函数果没定义系统会动生成缺省
调拷贝构造函数3种情况:
l 类象初始化该类象时系统动调拷贝构造函数实现拷贝赋值
l 函数形参类象调函数时实参赋值形参系统动调拷贝构造函数
l 函数返回值类象时系统动调拷贝构造函数
深拷贝浅拷贝:缺省拷贝构造函数实现数成员逐赋值浅拷贝类中指针时需定义拷贝构造函数谓深拷贝
13析构函数
完成象删前清理工作
特点:
l 析构函数构造函数名相前面必须加波浪号~
l 析构函数没返回值
l 析构函数没参数类中析构函数析构函数重载
l 撤销象时delete象指针编译系统动调析构函数
l 果没定义析构函数系统动生成缺省析构函数
类名::~缺省析构函数名(){}
14成员初始化列表
声明类时数成员声明中数成员进行初始化般构造函数中赋值语句进行嵌象常量引数成员需构造函数成员初始化列表中进行带成员初始化列表构造函数般格式:
类名::构造函数名(参数表):(成员初始化列表){}
15this指针隐含类成员函数中特殊指针
16象数组:类名 数组名[标值]该数组中元素象会动调构造函数数组中象删时系统调次析构函数
访问方法:数组名[标]成员名
17象指针:类名 *象指针名定义象指针会调构造函数
利象指针访问单象成员point *pobp&obp>show()(*p)show()
象指针访问象数组象作函数参数象指针
18指类成员指针:通指成员指针访问公成员
指类非静态成员指针
l 指公数成员指针:类型说明符 类名::*数成员指针名说明指针应该指成员:指针名&类名数成员名通象名(象指针)成员指针结合访问数成员: 象名* 类成员指针名 : 象指针名>*类成员指针名
l 声明指公函数成员指针:类型说明符 (类名*指针名)(参数表)初始化:指针名类名函数成员名通象名(象指针)成员指针结合访问函数成员:
(象名* 类成员指针名)(参数表):(象指针名>*类成员指针名)(参数表)
指类静态成员指针
l 类静态成员访问赖象普通指针指访问静态成员
19静态成员
l 静态数成员
l 关键字static声明该类象维护该成员拷贝必须类外定义初始化()指明属类初始化格式:数类型 类名::静态数成员名值静态数属整类通某象象指针访问类名::静态数成员名格式访问
l 静态成员函数
n 般说静态成员函数引属该类静态数成员静态成员函数
n 静态成员函数没this指针
n 类外代码类名作域操作符调静态成员函数类名::静态成员函数名(实参表)者象静态成员函数名(实参表)象指针〉静态成员函数名(实参表)
某类A:
class A
{
private
static int totalW
int w
public
A (int m)
{
w m
totalW +m
}
~A (){totalW w }
static int getT () { return totalW }
}
int A totalW 0
void main ()
{
A al (50)
cout < A a2 (100)
cout << a2getT () << endl
}
20友元
友元C++提供种破坏数封装数隐藏机制提高程序运行效率
l 友元函数
前类成员函数立前类外部函数访问该类成员包括公私受保护友元函数类成员没this指针直接引象成员名字必须通入口参数传递进象名象指针引该象成员某类girl友元函数disp格式:void disp(girl &g)
l 友元成员
类成员函数作类友元访问类成员访问friend声明类成员
l 友元类
类类友元类成员访问方类私成员
l 友元关系单具交换性传递性
21派生类
l 继承目:实现代码重派生目:新问题出现原程序法解决(完全解决)时需原程序进行改造
l 派生类声明
class 派生类名:继承方式 基类名
{
成员声明
}
继承方式:三种继承方式(省略默认私继承)公继承私继承保护继承
继承方式影响体现:
部访问:派生类成员基类成员访问权限
象访问:通派生类象基类成员访问权限
派生类中够直接访问基类公成员保护成员
l 公继承(public)
基类publicprotected成员访问属性派生类中保持变基类private成员直接访问
派生类中成员函数直接访问基类中publicprotected成员直接访问基类private成员
通派生类象访问基类public成员
l 私继承(private)
基类publicprotected成员private身份出现派生类中基类private成员直接访问
派生类中成员函数直接访问基类中publicprotected成员直接访问基类private成员
通派生类象直接访问基类中成员
l 保护继承(protected)
基类publicprotected成员protected身份出现派生类中基类private成员直接访问
派生类中成员函数直接访问基类中publicprotected成员直接访问基类private成员
通派生类象直接访问基类中成员
22类型兼容规
l 公派生类象作基类象反禁止具体表现:
– 派生类象赋值基类象
– 派生类象初始化基类引
– 指基类指针指派生类
l 通基类象名指针基类继承成员
23继承时派生类声明
class 派生类名:继承方式1 基类名1继承方式2 基类名2
{
成员声明
}
注意: 继承方式 限制紧基类继承
24继承时构造函数
l 基类构造函数继承派生类中需声明构造函数
l 声明构造函数时需类中新增成员进行初始化继承基类成员初始化动调基类构造函数完成
l 派生类构造函数需基类构造函数传递参数具体情况
类继承程中基类带默认值参构造函数时派生类构造函数:默认构造函数带参数构造函数带参数构造函数基类带默认值参构造函数时派生类必须构造函数
l 单继承时构造函数
派生类名派生类名(基类需形参类成员需形参)基类名(参数表)
{
类成员初始化赋值语句
}
l 继承嵌象时构造函数
派生类名派生类名(基类1形参基类2形参基类n形参类形参)基类名1(参数) 基类名2(参数) 基类名n(参数)嵌象数成员初始化
{
类成员初始化赋值语句
}
构造函数调次序
1. 调基类构造函数调序继承时声明序(左右)
2. 调嵌成员象构造函数调序类中声明序
3. 派生类构造函数体中容
25继承时析构函数
l 析构函数继承派生类行声明
l 声明方法般(继承关系时)类析构函数相
l 需显式调基类析构函数系统会动隐式调
l 析构函数调次序构造函数相反
26虚基类
l 基类场合
l virtual修饰说明基类
例:class B1virtual public B
27态
l 态分类:参数态包含态重载态强制态
l 态实现:函数模板类模板虚函数函数重载运算符重载
l 虚函数
² 虚函数动态绑定基础实现态重手段
² 定义基类中进行类声明中函数原型前写virtual
² virtual 说明类声明中原型函数实现时
² 具继承性基类中声明虚函数派生类中否说明原型函数动虚函数
² 派生类中重新定义时函数原型必须基类中原型完全相
² 调方式:通基类指针引执行时会根指针指象类决定调函数
² 友元函数静态成员函数联函数构造函数析构函数
² 求会分析具虚函数程序运行结果
l 纯虚函数
² 基类中说明虚函数该基类中没定义求派生类中必须定义版重新说明纯虚函数
² virtual 函数类型 函数名(参数表)0
² 声明纯虚函数基类中出函数实现部分函数体派生类出
² 带纯虚函数类称抽象类
² 声明抽象类象声明指抽象类指针引
² 果派生类中没实现纯虚函数继承基类纯虚函数该派生类抽象类
l 运算符重载
规限制
Ø 重载C++中列运算符外运算符:
*
Ø 重载C++语言中已运算符臆造新
Ø 改变原运算符优先级结合性
Ø 改变操作数数
Ø 重载运算符操作数中少应该定义类型
两种形式
Ø 重载类成员函数
Ø 重载友元函数
Ø 运算符函数
声明形式
函数类型 operator 运算符(形参)
{
}
重载类成员函数时 :参数数原操作数数1 (置++外)类中重载二元运算符成员运算符时指定1参数
重载友元函数时:参数数原操作数数少应该定义类型形参类中重载二元运算符友元函数时指定2参数
例 : +运算重载复数类成员函数
例 : +运算重载复数类友元函数
Ø 规实部虚部分相加减
Ø 操作数两操作数复数类象
Ø 具体程序参考幻灯片者作业8
28模板
模板实现代码重机制种工具实现类型参数化类型定义参数实现真正代码重模板分函数模板类模板分允许户构造模板函数模板类
Ø 函数模板般说明形式
template
返回类型 函数名(模板形参表)
{
函数体
}
函数模板中允许类型参数template
Ø 类模板:
template
{类成员声明}
果需类模板外定义成员函数采形式:
template <模板参数表>类型名 类名
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档