C++对象和类笔记

本文介绍了C++中的对象和类的基本概念,包括构造函数、对象的创建与使用、类的定义与实现分离、避免多次包含、数据域封装以及类抽象与封装。构造函数用于初始化对象,对象通过点运算符访问数据域和函数。类定义与实现的分离有利于代码的维护和知识产权保护。数据封装确保了私有数据域的安全,通过get和set函数进行访问和修改。类抽象和封装是面向对象编程的核心原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个类是指一个模板蓝图或约定,定义了对象具有什么样的数据域和函数。一个对象就是类的一个实例,我们可以创建一个类多个实例。类和对象就如同菜谱与菜之间的关系,一个菜谱可以做狠多菜。

构造函数

  • 构造函数的名字必须与类名相同。
  • 构造函数没有返回类型—即便返回void也不行。
  • 在创建对象时,构造函数被调用被调用,他的作用就是初始化对象。

构造函数可以被重载,即可以有多个同名的构造函数,但是他们的函数签名不同。

一个类通常会有一个无参数构造函数(如Circle()),这样的构造函数称为无参构造函数(no-arg或no-argument constructor)

创建及使用对象

对象的数据域和函数可用对象名通过点运算符(.)来访问
创建对象的同时会调用构造函数。

  • 对象名.数据域 -> 引用对象的一个数据域。
  • 对象名.函数(参数) -> 调用对象上的一个函数。

注:自定义一个类时,应将类名中的每个单词的首字母大写,例如,Circle。C++库中的类名都是小写,这样就易于区分两种不同的类。

  1. 我们可以使用基本数据类型定义变量,也可以使用类名来声明对象。因此从这个意义上讲,一个类就是一个数据类型
  2. 可以使用赋值运算符=来进行对象间内容的复制。缺省情况下,源对象的每个数据域会被复制到目的对象的相应数据域。
  3. 对象内容可以改变,但是对象名不能变。

类定义和类实现的分离

类定义与类实现的分离有利于类的维护。

类定义描述了类的“约定”, 而类实现则实现了这一约定。类定义简单的列出所有数据域、构造函数原型和函数原型,类实现给出构造函数和成员函数的实现,两者可以置于两个分离的文件中。两个文件应该使用相同的名字,但具有不同的扩展名。类定义文件的扩展名为.h(h意思为头(head))<注意头文件末尾有一个分号>,类实现的文件扩展名为.cpp
::为二元作用域解析运算符,指明了类成员的作用范围。

优点:
1. 可以隐藏实现。在不改变类定义的前提下可以自有更改实现。
2. 保护知识产权。供应商可以只提供头文件和类的目标代码。从而隐藏类实现的源代码。

避免多次包含

“包含保护”可避免头文件被多次包含。
方法:

#ifndef ClassName_H(格式:类名(全大写)_H)
#define ClassName_H(格式:类名(全大写)_H)
...
#endif

数据域封装

数据域私有可以保护数据,并且使类易于维护。
为防止客户程序直接修改类的属性,我们应该使用private关键字,将数据域声明为私有的。这就是所谓的数据域的封装。如果一个数据域是私有的,那么在类之外的程序中,是无法通过直接引用类对象来访问他的。但客户程序往往需要提取,修改数据域。为了使私有数据域可以被访问,可定义一个get函数返回数据域的值。为事私有数据域可以被修改,可提供一个set函数为数据域设置新值。

通俗的说,get函数就是一个“访问器”, 而set函数就是一个“更改器”。

get函数签名

returnType getPropertyName() 
eg:
    bool isPropertyName()

set函数签名

void setPropertyName(dataType propertyValue)

类抽象与封装

类抽象就是将类的实现与使用分离开来。类的实现细节被封装起来,对用户是隐藏的,这就是所谓的类封装。
类抽象指的是将类的实现和他的使用分离开来。类封装指类的实现细节被封装起来,对用户是隐藏的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值