C++面向对象程序设计(3)

本文详细介绍了C++中如何使用类和对象,包括构造函数、析构函数、对象初始化、对象赋值和复制、静态成员、友元以及类模板等核心概念。通过实例解析了如何通过构造函数初始化对象,如何定义和使用构造函数、析构函数,以及对象的赋值和复制操作。此外,还讨论了静态成员、友元和类模板在C++面向对象编程中的应用。
摘要由CSDN通过智能技术生成

三,怎样使用类和对象

1,利用构造函数对对象进行初始化

对象的初始化

2,构造函数

构造函数的重载

3,析构函数

4,对象指针

4,共用数据的保护

常对象

常对象成员

指向对象的常指针

指向常对象的指针变量

5,对象的赋值和复制

对象的赋值

对象的复制

6,静态成员

7,友元

8,类模板


1,利用构造函数对对象进行初始化

对象的初始化

不能在类声明中对数据成员初始化,因为类并非实体而是抽象类型。

如果一个类中所有成员都是公用的,则可以在定义对象时对数据成员进行初始化。

class Time

{public:

hour;

};

Time t1 = {10};    //将t1初始化为10

这种情况和结构化初始变量类似,但如果类中数据成员有private或者protected,就不能使用该方法。

2,构造函数

构造函数(constructor)是一种特殊的成员函数,在建立对象时自动执行,不能被用户调用。

可以在创建对象时为对象的成员属性赋值。

构造函数的名字必须与类名相同,不具有任何类型,不返回任何值。

class Time

{public:

        Time()  //构造成员函数

        {hour = 0;}

};

Time t1 = {10}; 

带参数的构造函数

构造函数首部一般格式:

构造函数名(类型1 形参1,类型2 形参2,…)

实参是在定义对象时给出的。定义对象一般格式为:

类名 对象名 (实参1,实参2,…)

用参数初始化表对数据成员初始化

类名 :: 构造函数名([参数表]): 成员初始化表

{

        构造函数体

}

构造函数的重载

在一个类中可以定义多个构造函数,以便为对象提供不同的初始化方法。这些构造具有相同的名字,而参数的个数或类型不同,这称为构造函数的重载

3,析构函数

析构函数(destructor)是一个特殊的成员函数,作用与构造函数相反,其作用为撤销对象占用的内存之前完成一些清理工作,使这部分内存可以重新分配。

析构函数不返回任何值,没有函数类型,没有函数参数(故不能被重载)。

执行析构函数的情况:

1,在函数中定义了一个对象,函数调用结束,对象该被释放,释放前自动执行析构函数。

2,静态(static)局部对象在函数调用结束时对象并不释放,此时不调用。只在main函数结束或调用exit函数结束程序时,才调用static局部对象的析构函数。

3,定义了一个全局对象,在程序的流程离开其定义域时,调用该全局变量的析构函数。

3,new运算符动态地建立一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数。

调用构造函数和析构函数的顺序

先构造的后析构。

4,对象指针

指向对象的指针

一个对象存储空间的地址就是对象的指针,其定义如下:

类名 *对象指针名

指向对象成员的指针

存放对象成员地址的指针变量就是指向成员的指针变量。

指向对象数据成员的指针

数据类型名 *指针变量名

指向公用成员函数的指针变量

数据类型名(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值