类和对象

一,类的定义基本语句

class 类名

{    

成员列表

};

class和struct的区别是默认封装条件不同,class默认private,struct默认public。从这一点可以看出class的安全性更高。class中成员用public标注后也为public。

抽象数据类型(ADT)C++允许用户以类的形式自定义数据类型,反映待解决问题中的各种概念,以更自然的方式编写程序。数据抽象接口和实现分离类的接口包括用户能执行的操作类的实现包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。

抽象数据类型由两部分组成:1,一组数据。2,对数据的操作。

二,访问控制与封装。

信息隐藏是很有必要的,控制对类中不同成员的访问,对客户程序员隐藏实现信息,客户程序员只对类的接口编程。

访问限定符C++通过限定成员的访问权限来实现信息隐藏。

关键字public、private 和protected 被称为访问限定符。

访问限定符在类定义中使用,一般语法为:

struct 类名

{public:

公有成员声明;

private:

私有成员声明;

protected:

被保护成员声明;

};

访问限定符在类定义中的出现顺序和出现次数没有限制。

一个访问限定符的作用会持续到出现下一个访问限定符或类定义结束。如果没有指定访问限定符,struct 成员的默认访问限制为public。可以看出public限定公有成员,谁都可以访问。private限定私有成员,体现封装的思想。

三,友元

C++引入了friend关键字,如果想让非成员函数访问一个类中的私有数据,应该在类中将这个函数声明为friend。一个类的友元可以访问该类的私有数据。在声明友元时要遵循一条规则:友元必须在被访问的类中声明。

一个类的友元可以是

全局函数。

另一个类的成员函数。

另一个类。

类A是类B的友元表示A的所有成员函数都是B的友元。

友元关系不可以传递,如果a是b的友元,c是b的友元,但ac不是友元。

友元的缺点

会破坏类的封装性,所以要尽量避免使用友元。

四,构造函数和析构函数构造函数在创建对象时被自动调用,负责初始化对象。构造函数的名字和类名字相同,它没有返回类型。构造函数的参数通常为数据成员提供初始值。构造函数可以重载。如果成员是const、引用,或者是未提供默认构造函数的类类型,就必须通过构造函数初始化列表提供初值。在初始化列表中,每个成员只能出现一次成员初始化的顺序与它们在类定义中出现的顺序一致。初始化列表中初值排列的顺序不影响实际的初始化顺序。如果可能的话,尽量避免用某些成员初始化其他成员。 析构函数析构函数负责在对象生存期结束时返回相关资源和自动释放资源。当对象离开作用域时,或者用delete 释放在堆上创建的对象时,析构函数都会被自动调用。析构函数的名字是类名字前加波浪线“~”析构函数没有返回类型,也没有任何参数。析构函数不能重载,只能为一个类定义唯一一个析构函数。const成员const 可以限定类中的数据成员,描述对象中的常量。在数据成员声明前加const 关键字就将其限定为常量const 数据成员在构造函数的初始化列表中初始化。创建对象时初始化其中的const 数据成员,之后const 成员的值在对象的整个生存期中都不会改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值