`
saybody
  • 浏览: 904273 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

C++学习摘要之一:类和对象

阅读更多

第一章 类和对象

类和对象是面向对象程序设计的两个最基本、最重要的概念。所谓对象就是客观事务在计算机中的抽象描述;而所谓类则是对具有相似属性和行为的一组对象的统一描述。从程序设计语言的角度来说,类是一种数据类型,而对象是具有这种类型的变量。

1.类的定义

类定义的一般形式为:
class 类名
{
private
数据成员或成员函数
protected
数据成员或成员函数
public
数据成员或成员函数
};
<各成员函数的实现代码>
其中,class是定义类的关键字。类名是一个有效的标志符,且一般首字母大写。大括号括起来的部分是类说明部分,它声明了类的所有成员(包括数据成员和函数成员),这些成员从访问权限上分成三类,即私有(private)、公有(public)和保护(protected),其中默认权限为private。
类的private部分说明的成员,在类之外是不能存取的,只有类中的成员函数才能存取private的数据成员和成员函数。类的public部分说明的成员,可被程序中的任何函数或语句存取,public成员多为成员函数,用来提供一个与外界的接口,外界只有通过这个接口才可以实现对private成员的存取。类的protected部分说明的成员,不能在类之外存取,只有类的成员函数及其子类(派生类)可以存取protected的成员。

2.成员函数的定义

类中的成员函数可以在两处定义:一是将成员函数的定义直接写在类中,一般适合于成员函数规模较小的情况;二是在类的定义体中只写出成员函数的原型说明,而成员函数的定义写在类的定义之外,这种情况比较适合于成员函数体较大的情况,其定义格式为:
返回值类型类名::成员函数名(参数说明)
{
函数体;
}
此处的“::”符号称为作用域运算法(名空间分隔符),它是用来指明哪个函数属于哪个类或哪个数据属于哪个类。
需要说明的是,成员函数既可以是有参函数,也可以像普通函数一样,给形参指定默认值。

3.对象及指向对象的指针

对象是类的实例,定义对象之前一定要说明该对象的类。定义对象的一般格式为:
类名对象名表;
其中,对象名表中可以有一个或多个对象名,多个对象名之间用逗号分隔。
另外,也可以定义指向类类型的指针,其定义格式为:
类名*指针变量名;

4.访问对象的成员

访问对象的成员有以下两种格式:
(1) 对象名.成员名
(2) 指针变量名->成员名
第一种格式是利用对象和运算符“.”访问成员;而第二种格式是采用指向对象的指针和运算符“->”来访问成员,并且第二种格式中的指针变量必须已指向某个对象。

5.类成员指针

在C++语言中,除了可以定义指针对象外,还可以定义类成员指针。
类数据成员指针就是程序中定义的用于指向类中数据成员的指针变量,借助该指针变量可以访问它所指向的类中的数据成员(该数据成员必须具有public访问权限),但该指针变量不是类的成员,它只是程序中的一个指针变量而已。
类数据成员指针的定义格式如下:
类型类名::*指针变量名;
此处的“类型”要与类中数据成员的类型保持一致。
要使已经定义的类数据成员的指针变量指向类中某个数据成员时,可以通过以下语句:
类数据成员指针变量名=&类名::类数据成员变量名;
当类数据成员指针变量已经指向类中某个数据成员时,可以通过以下语句访问类中数据成员:
对象名.*类数据成员指针变量名;

6.this指针

在每一个类成员函数的形参表中都有一个隐含的指针变量this,该指针变量的类型就是成员函数所属类的类型。当程序中调用成员函数时,this指针变量被自动初始化为发出函数调用的对象的地址。
尽管我们在定义成员函数时没有看到this指针变量,也没有定义this指针变量,但是在成员函数的函数体内我们可以使用this指针变量,因为该指针变量使系统隐含给出的,我们不需要也不能在成员函数的形参表中对this指针变量进行显示说明。
类中成员函数有了隐含的指针变量this后,就可以保证用不同的对象调用成员函数是对不同对象的操作。

7.对象赋值语句

对于同一个类生成的两个对象,可以进行赋值,其功能是将一个对象的数据成员赋值到另一个对象中去,赋值语句的左右两边各是一个对象名。
如,已知一个类Example,则:
Example obj1,obj2;
obj2=obj1;//将对象obj1的数据成员赋给对象obj2

8.对象的作用域和生存期

在不同的位置以不同的方式定义对象时,其作用域和生存期是不同的,其原理与普通变量相同。可分为局部对象(不包括局部静态对象)、静态对象(局部静态对象和全局静态对象)、全局对象等。

9.堆对象

所谓堆对象是指在程序运行过程中,根据需要随时可以建立和删除的对象。堆对象被创建在内存中一些空闲的存储单元中,这些存储单元被称为堆。堆可以被创建的对象占有,可以通过删除堆对象而获得释放。
需要利用new运算符创建堆对象,利用delete运算符删除堆对象。堆对象的生存期是整个程序的生命期。如:
Example *p;//p为指向类Example对象的一个指针
p=new Example();//使用new给p分配内存空间
delete p;//使用delete释放p所指向的空间

10.对象数组

当一个数组的类型为类类型时,该数组中的每个元素都是该类中的一个对象,则这种数组就是对象数组。对象数组的定义格式为:
类名数组名 [数组大小];
如:
Example array[10];

表明array数组是一个一维对象数组,该数组有10个元素,从array[0]array[9],其中每个元素都是类Example的对象。

分享到:
评论

相关推荐

    C++程序设计基础课件第-讲类和对象完美版资料.ppt

    类的定义是C++程序设计中的基本概念之一,它是对一组客观对象的抽象,封装了该组对象所具有的共同特征,包括属性和服务。类的定义格式通常包括类名、属性和函数成员。 对象是类的实例,它具有类所定义的属性和行为...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。 C++成山...

    小学生C++入门班与提高班(2022.03.26)L.pdf

    本资源摘要信息旨在为小学生提供 C++ 编程入门班与提高班的学习资源整合,涵盖了基础知识点和学习资源,旨在帮助小学生快速入门 C++ 编程。 C++ 基础知识点 1. 什么是 C++?:C++ 是一种高级编程语言,设计目的是...

    C++课件 很好 很简明

    9. **C++学习摘要之四:虚函数和多态.doc**:这个文档可能是一个重点复习资料,详细阐述了虚函数如何实现多态,以及在实际编程中如何利用多态性提高代码的灵活性和可扩展性。 这些课件非常适合C++初学者,逐步从...

    C++语言程序设计(郑丽)含课本知识点摘要、讲稿、习题答案、例题代码

    3. **指针**:作为C++的强项之一,指针允许直接操作内存地址。理解指针的声明、使用、解引用,以及指针与数组、函数的关系。 4. **类与对象**:C++的核心是面向对象编程,需要掌握类的定义、对象的创建和使用,以及...

    C++随堂测试(继承、多态、重载)(答案).docx

    C++随堂测试(继承、多态、重载) 本资源摘要信息涵盖了C++编程语言...C++是支持面向对象编程的语言之一。 本资源摘要信息涵盖了C++编程语言中继承、多态和重载三个重要概念的知识点,对于学习C++的读者非常有帮助。

    Effective C++中文 [ 第3版 ]可编辑带书签版

    这本书被广泛认为是C++编程领域的重要参考书之一,旨在指导读者如何高效地使用C++语言进行软件开发。虽然无法提供具体内容的分析,但我们可以根据这本书的常见内容来构建知识点概述: 1. C++语言基础:《Effective ...

    The diffenences bwtween Java and C++ (JAVA与C++区别)

    **Java**:相对而言,Java的设计目标之一就是简化编程过程。例如,Java没有指针,这减少了因指针错误而引发的内存问题。此外,Java通过垃圾回收机制自动管理内存,大大减轻了程序员的负担。 ##### 语法差异 **C++*...

    c++期末复习题.doc

    本资源摘要信息涵盖了C++语言的多个方面,包括C++与C语言的关系、变量和数据类型、函数、类和对象、继承和派生类、构造函数和析构函数、静态成员函数、友员函数等。 一、C++与C语言的关系 * C语言是C++的一个子集 ...

    杂凑算法MD5的C++实现

    - **FF函数**:这是四个处理函数之一,用于第一轮的四个操作。FF(A, B, C, D, X[i], s, T)中,A、B、C和D是原有的四个变量,X[i]是输入的块数据,s是位移量,T是特定的常数。 - **GG函数**:第二轮使用GG,类似FF...

    think in C++

    - **读者反馈**:本书受到了众多专业读者的高度评价,被认为是必备的参考书籍之一,不仅适用于初学者,也适合有经验的开发者作为深入学习的工具书。 #### 更深入的内容探索 - **面向对象设计哲学**:本书不仅教授...

    C++Builder 6的文件和文件夹操作

    遍历文件夹是文件系统操作中的常见需求之一。C++Builder 6可以通过`FindFirstFile`和`FindNextFile`函数结合使用来遍历指定文件夹中的所有文件和子文件夹。通常做法是先使用`FindFirstFile`找到第一个文件,然后通过...

    我的c++第一节课.doc

    本资源摘要信息将对C++程序设计基础知识点进行总结和解释,涵盖循环结构、变量定义、自增运算符、输入输出操作等基础知识点。 循环结构 循环结构是C++程序设计中的一种基本结构,用于重复执行某些操作。循环结构有...

    The C++ Standard Library.pdf

    - **核心概念**:《C++标准库》是C++编程语言的一个重要组成部分,它提供了一系列预定义的对象、函数和类型,极大地简化了开发者的编程工作。 - **覆盖范围**:该标准库涵盖了基本数据结构、容器、算法、输入/输出...

    报告和视频,观看视频报告怎么写,C,C++源码.zip

    5. **学习资源**:观看视频是学习C和C++的有效途径之一,视频教程通常包含直观的演示和详细的解释,有助于理解和记忆。 总之,这个压缩包提供了一个全面学习C和C++编程的平台,从撰写观看视频报告的技巧到源码的...

Global site tag (gtag.js) - Google Analytics