C++基础知识点(二)面对对象设计方法

面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(object),同类对象还可抽象出共性,形成(class )。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口。对象之间通过消息(message)进行通讯。
我们把对象之间产生相互作用所传递的信息称做消息。 
C++将“向对象发消息”处理成“调用对象的某个成员函数”
对象:是一个抽象的概念,用来描述某一类对象所共有的、本质的属性和类行为;
根据抽象的原则对客观事物进行归纳和划分;

面向对象的基本特征:抽象,封装,继承,多态;


封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。
封装性增加了对象的独立性,从而保证了数据的可靠性;
通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。
外部对象不能直接操作对象的属性,只能使用对象提供的服务;


抽象的设计思路:数据抽象化为属性  处理过程抽象化为操作(方法)

类的定义:
class  <类名>
{
public :
                 <公有数据成员和成员函数>;

protected:
                 <保护数据成员和成员函数>;

private :
                 <私有数据成员和成员函数>;


};

对象的定义:

 

声明的语法:类的名称  对象的名称;

 

例如:

Stack oneStack; //Stack类型的对象
Stack arrayOfStack[10]; 
//Stack类型的对象数组
Stack *pStack=&oneStack;
//Stack类型的指针
Stack &s = oneStack;  // 引用一个Stack对象


构造函数:
如何声明构造函数:

函数名和类名完全相同;
不能定义构造函数的类型(返回类型),也不能使用void;
构造函数应声明为公有函数,但它不能像其他成员函数那样被显式地调用;
构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数(重载)
创建类的对象时,自动调用类的构造函数;
创建一个对象时只调用一个构造函数(根据参数列表)且只在创建时调用一次;


重载构造函数:在一个类需要接受不同的初始化值时,就需要编写多个构造函数, 他们之间构成重载关系;

 

构造函数的种类: 

普通构造函数:有两个或两个以上参数的构造函数;

默认构造;函数复制(拷贝)构造函数;类型转换构造函数.


拷贝(复制)构造函数:
特殊的构造函数
功能:使用一个已经存在的对象来初始化一个新的本类的对象
声明:只有一个参数并且参数为该类对象的引用
class 类名{
public:类名(类名  &对象名);

 

};

 

如果类中没有说明复制构造函数,则系统自动生成一个缺省复制构造函数,作为该类的公有成员

浅复制和深复制:

浅复制:将对象数据成员的值进行简单的复制(最好利用系统自动生成的复制构造函数,完成浅复制;

深复制:不仅将对象数据成员的值进行复制,而且对指针型数据成员生成新空间,然后复制对应的值;
*使用时要考虑执行效率;

explicit关键字:编译器不会把声明为explicit的构造函数用于隐式转换,它只能在程序代码中显示创建对象;

析构函数:
函数名和类名相似(前面多了一个字符“~”)
没有返回类型没有参数析构函数不能被重载
如果没有定义析构函数,编译器会自动生成一个默认析构函数,
其格式如下:
类名::~默认析构函数名( )
{
}

默认析构函数是一个空函数。
作用
:撤销对象前做清理工作,一般是释放对象在生存期间动态申请的空间
当对象超出其定义范围时(即释放该对象时),编译器自动调用析构函数。
对象被定义在函数体内,则当这个函数结束时,该对象的析构函数被自动调用。
对象是使用new运算符动态创建的,在使用delete运算符释放它时,delete将会自动调用析构函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值