网站首页 > 基础教程 正文
类与对象:
类是用户声明的一种抽象的数据类型。
对象是类的一个实例。
在C++中可以用两种方法定义对象:
(1) 在声明类的同时,直接定义对象,即在声明类的右花括号,“}”后,直接写出属于该类的对象名表。这时定义的对象是一个全局对象。
(2)声明了类之后,在使用时再定义对象。这时定义的对象是一个局部对象,建议使用这种方法来定义对象。
类成员的访问权限
- 按访问权限划分,数据成员和成员函数可分为3种,分别是公有数据成员与成员函数、保护公有数据成员与成员函数,以及私有数据成员与成员函数。
- 一般情况下,一个类的数据成员应该声明为私有成员(或保护成员),这样,使数据得到有效的保护;成员函数声明为公有成员,是类与外界的接口。
构造函数与析构函数
(1) 构造函数。
- 构造函数是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化。构造函数不能像其他成员函数那样被显式地调用,它是在定义对象的同时被调用的。
- 在实际应用中,如果没有给类定义构造函数,则编译系统自动地生成一个缺省的构造函数。
- 在C++中有多种构造函数,如缺省参数的构造函数、拷贝构造函数、缺省的构造函数等,它们有不同的特点和用途。
(2) 析构函数。
- 析构函数也是一种特殊的成员函数。
- 它执行与构造函数相反的操作,通常用于撤销对象时的一些清理任务,如释放分配给对象的内存空间等。
- 析构函数同构造函数一样,也是类的一个特殊成员函数,其函数名称是在类名的前面加上“~“。
- 析构函数没有返回值和参数,不能随意调用,也没有重载,只是在类对象生存期结束时,系统自动调用。
浅拷贝与深拷贝
- 所谓浅拷贝,就是由缺省的拷贝构造函数所实现的数据成员逐一赋值。
- 若类中含有指针类型的数据,这种方法将会产生错误。
- 为了解决浅拷贝出现的错误,必须显式地定义一个自己的拷贝构造函数,使之不但拷贝数据成员,而且为对象分配各自的内存空间,这就是所谓的深拷贝。
类图的UML表示
- 随着应用系统的面向对象分析与设计的建模表示方法和建模过程方法的不断丰富和完善,UML称为进行面向对象系统建模的业界标准。
- 在系统分析和设计时,UML作用非常重要,其中的类图具有充分强大的表达能力和丰富的语义,是建模时非常重要的一个图。
猜你喜欢
- 2025-03-29 C++类型转换函数:将当前类的类型转换为其它类型
- 2025-03-29 C++中两个类相互引用的解决办法(mfc两个类互相调用)
- 2025-03-29 C++类的三种继承方式:public/protected/private
- 2025-03-29 C++启蒙之旅--模板类为何物(c++模板的用法)
- 2025-03-29 C++类继承(c++类继承final)
- 2025-03-29 C++类的两种不同嵌套方式的实现与分析
- 2025-03-29 面试经验:68个C/C++常见面试题汇总(含答案)
- 2025-03-29 大话C++语言:类继承与派生(类的继承是指派生类继承基类的?)
- 2025-03-29 【C++编程语言】之 类和对象——静态成员
- 2025-03-29 C++友元类和友元函数是什么-Linu C++第63讲
- 最近发表
-
- 碎片时间学Python-01安装Python(python详细安装教程3.8)
- Python安装(python安装教程)
- Python pip安装与使用步骤(python3.6 pip安装)
- 第二篇:如何安装Python并运行你的第一个程序
- Python入门教程:安装(python安装教程2020)
- 常用的Python库安装方法(Python实用教程)
- Python下载与安装教程(很详细)(python下载安装教程3.9.1)
- python安装教程(小白入门)(python安装详细步骤)
- 详解pip的基本使用和离线安装Python第三方库
- (一)从零开始安装Python(然后安装python)
- 标签列表
-
- 菜鸟教程 (58)
- jsp (69)
- c++教程 (58)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)