【C++私房菜】类和对象详解

2024-02-26 1192阅读

温馨提示:这篇文章已超过429天没有更新,请注意相关的内容是否还可用!

目录

一、类与对象

1、类是什么

二、类和对象的基础知识

2.1 定义类:成员变量和成员函数

2.2 创建对象:实例化一个类的对象。

2.3对象的生命周期:构造函数和析构函数。

a. 构造函数

b. 析构函数

c.小结:

三、成员变量和成员函数

3.1、成员变量:类的静态成员

a. 声明静态成员

b. 定义静态成员

3.2、成员函数:成员函数的定义和使用

3.3、访问控制:public、private和protected关键字的使用

四、类的其他特性

4.1 对象中的this指针

4.2 拷贝与赋值:深拷贝与浅拷贝

4.3 友元关系

a. 友元函数

b. 友元类和友元成员函数


一、类与对象

1、类是什么

在 C++中,我们通过定义一个类(class)来定义自己的数据结构。一个类定义了一个类型,以及与其关联的一组操作。类机制是 C++最重要的特性之一。实际上,C++最初的一个设计焦点就是能定义使用上像内置类型一样自然的类类型(class type)。类是 C++中面向对象编程(OOP)的核心概念之一。

类是用户定义的一种数据类型。要定义类,需要描述它能够表示什么信息和可对数据执行哪些操作。类之于对象就像类型之于变量。也就是说,类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。换句话说,如果说类就好比所有编程语言,则对象就好比其中某个语言,如我们本文要描述的C++。我们来扩展这种类比,表示编程语言的类中包括该类可执行的操作的定义,如使用此编程语言我们可以实现的功能。如果了解其他 OOP 术语,就知道 C++类对应于某些语言中的对象类型,而 C++对象对应于对象实例或实例变量。

类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创建的实体。

二、类和对象的基础知识

2.1 定义类:成员变量和成员函数

类是一种将抽象转换为用户定义类型的 C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。下面来看一个表示股票的类。

首先,必须考虑如何表示股票。可以将一股作为基本单元,定义一个表示一股股票的类。然而,这意味着需要 100 个对象才能表示 100 股,这不现实。相反,可以将某人当前持有的某种股票作为一个基本单元,数据表示中包含他持有的股票数量。一种比较现实的方法是,必须记录最初购买价格和购买日期(用于计算纳税)等内容。另外,还必须管理诸如如拆股等事件。首次定义类就考虑这么多因素有些困难,因此我们对其进行简化。具体地说,应该将可执行的操作限制为:

  • 获得股票;

  • 增持;

  • 卖出股票;

  • 更新股票价格;

  • 显示关于所持股票的信息。

    可以根据上述清单定义 stock 类的公有接口。为支持该接口需要存储一些信息。

    接下来定义类。一般来说,类规范由两个部分组成。类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口类。方法定义:描述如何实现类成员函数。简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。

    C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。而C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。

    C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如: 之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现, 会发现 struct 中也可以定义函数。

    简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。

     class name
     {
         //....类体:由成员函数和成员变量组成
         
     };// 一定要注意后面的分号

    其中class为定义类的关键字,name 为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。 类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

    定义类有两种方式:

    1. 声明和定义全放在类体中。

    2. 声明在类内,定义在类外。如类声明置于.h文件中,成员函数放在.cpp中。

     //1、声明和定义全放在类体中。
     class Person
     {
     public:
         void show(){
             cout
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]