C ++ 学习笔记(一)

C++面向对象程序设计基础
面向对象程序设计的3个重要特性是封装性、继承性和多态性。将所描述的客观事物的不同类型数据和对它们的操作封装成为一个集合体——类和对象,通过类的封装性,可以实现数据隐藏,便于程序的维护和修改。继承特性的引入,为代码的重复利用提供了更有效的手段,派生类继承了基类的所有特性,并改造基类的成员和添加新的成员。C++语言支持编译时的多态和运行时的多态,运行时的多态通过虚函数来实现,利用动态绑定实现的多态具有很高的灵活性。

类的定义和对象的创建
类是面向对象系统中最重要的概念,面向对象程序设计中的所有操作都归结为对类的操作。类是一组客观对象的抽象,组成类的对象均为该类的实例。

类设计的基本概念
类的构造与设计是面向对象程序设计的支柱,是实现数据隐藏和封装性的基本单元。类的说明是一个抽象的概念。它声明了一种新的“数据类型”,描述了一类对象的共同特性,把数据项及其相关函数包容在一起。类是通过其成员的访问控制来实现隐藏于封装的。类的成员包括数据成员(也称属性)和函数成员(也称方法或操作)。类成员按其使用或存取方式分类,可以分为私有、公有、保护等,分别用关键词private、public和protect来修饰,为实现封装和继承机制提供条件。类的私有成员对外界来说是不可见的,只有在本类内定义的函数可以访问,不允许类外的代码操做和访问。类的public部分定义的数据变量和成员函数可以被类外代码访问,对外界来说是可见的,是类对象的外部接口。
在同一建模语言(UML)中,类的标识图符用巨型框表示。类的巨型框分为3部分:最上面是类名,中间为数据成员(属性),下面为函数成员(操作)。分别用+、-和#对应表示成员的共有、私有和保护等访问权限属性(可见性属性)。类在UML中的表示实例如下图所示:
这里写图片描述

类的定义格式
类的定义格式一般分为两大部分,说明部分和实现部分。说明部分用来说明该类中的若干成员,包括被说明的数据成员和成员函数。其中,数据成员也称为属性,成员函数又称为方法或操作,它们是用来对数据进行操作的。数据成员的说明包含数据成员的名字及其类型。成员函数可以再类体内定义,也可以只有函数原型说明。在类内定义的成员函数,按内联函数处理。类外实现部分主要用来对一些在类体内只有原型说明而没有定义的成员函数进行定义。如果一个类所有的成员函数都是在类体内定义的,则该类就没有类外实现部分。类定义的具体格式如下:

// 说明部分
class <类名>
{ public: <若干成员的说明或实现>
  private: <若干成员的说明或实现>
  protect: <若干成员的说明或实现>
};
// 实现部分:
<若干函数成员的实现>

其中,class为关键字:类名为标识符,类是具有唯一标识符的实体。一对花括号内包含的语句是该类的类体,在类体中对该类的类成员进行定义和说明。
类成员包括数据成员和函数成员。数据成员通常是变量或对象的说明语句。函数成员是指函数的定义语句或说明语句。
public: 关键字,指出其后的成员为公有成员。类外代码可以直接引用公有成员,它提供了类与外界的接口。通常将其类的成员函数全部或部分定义为公有成员。
private:关键字,可默认,指出其后的成员为私有成员。私有成员只能被本类定义的函数引用,通常将数据成员定义为私有成员。
类的成员属性含有一种称为保护的可见性属性(访问权限),用protect关键字修饰,它在不同的条件下具有共有成员或者私有成员的特性。

类的成员函数
类的成员函数描述的是类的行为和功能,是程序算法的具体实现。通常一个类的成员函数比较多,为了使类看起来简洁清晰,队成员函数的定义一般采用这样的策略:在类的定义中声明成员函数(函数原型),在类体外的实现部分定义该函数。在类体外定义成员函数时,必须使用“::”符号来限定,说明该函数是哪个类的函数,该符号为作用域运算符。

类成员的访问控制
类成员访问权限的控制,实际上体现了类的隐藏和封装性,这种控制实际上是通过设置类成员的访问控制属性来实现的。访问控制属性有3中:public、private和protect。
公有类型定义了类的外部接口。对于类来讲,任何来自外部的访问都要通过外部接口进行。
私有成员不允许外部程序代码直接访问,这样私有成员就被隐藏在类中,对外界是不透明的。外部程序代码要访问私有成员,必须要通过类内定义的公有成员函数,这样就实现了访问控制和信息的安全性。
保护类型和私有类型有些相似,其差别实在类的继承和派生时对派生类的影响不同。
定义一个类时,其成员函数可直接访问同类中的变量成员和调用同类中的成员函数。公有成员的作用域不仅包括类说明体,还包括它所属的对象的可视范围(静态成员除外);私有成员或保护成员的作用域仅限于类的说明体和类的成员函数。
在C++程序运行时,类是以其实例——对象之间的操作和交互访问完成系统的功能的。各个对象成员访问的原则是必须在成员明前加上对象名。因为类的每个对象都有自己成员的备份,成员只能存在于对象中,不能独立与对象直接给变量赋值。对于对象的成员访问,使用成员选择运算符“.”(用于一般对象)或指向符“->”(用于对象指针),将对象名与成员名联系起来。

对象的声明与使用
对象是类的一个实例。它属于某个类,在定义对象前必须先有定义好的类。一个类可以定义若干个对象,个对象的名字应具有唯一性,不同对象的数据成员值通常是不同的。
定义一个对象实例的格式如下:
<类名> <对象名表>;
其中,类名是指定义对象所属的类的名字。对象名表可以包含多个对象,即一个类可以定义多个同类对象,个对象之间用逗号分开。对象名可以使一般的对象名,也可以是指向对象的智振明或尹永明,还可以使对象数组名等。
尹永明是C++中为一个变量或对象起一个别名而设定的,引用名与对应的变量或对象使用同一个存储单元。
对象的成员表示方法:
<对象名>.<数据成员> 或 <对象名> -> <数据成员>
<对象名>.<函数成员> 或 <对象名> -> <函数成员>

展示一个基础的C++程序:

include <iostream.h>
class Tpoint
{
private: int X,Y;
public: void point(int x, int y);
    int getX() {return X;}
    int getY() {return Y;}
    void Move(int, int);
};
void Tpoint::point(int x, int y) {X=x; Y=y;}
void Tpoint::Move(int xset, int yset) {X+=xset; Y+=yset;}

void main()
{
Tpoint D1,*D2;
D1.point(10,12);
D2->point(7,12);
D1.Move(4,5);
D2->Move(-2,1);
cout<<"x1="<<D1.getX()<<",y1="<<D1.getY()<<endl;
cout<<"x2="<<D2->getX()<<",y2="<<D2->getY()<<endl;
}

此程序定义了一个点类,在主函数中生成了一个一般对象D1和一个对象指针D2,分别用“.”和“->”运算符调用函数成员,设置坐标并移动,由主函数负责打印出X和Y的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值