【C++】类和对象(一)

       

      C++兼容了C语言中的 struct  ,C语言中的 struct 是用户自定义数据类型(UDT),并且不能在 struct 中定义函数。C++中的 struct 不仅能够定义变量,也能够定义函数。

       那么C语言中的 struct 和C++中的 struct 有什么区别呢?

       答:1、C语言中 struct 是用户自定义数据类型(UDT),C++中 struct 是抽象数据类型(ADT),支持成员                     函数的定义。

              2、C语言中的 struct 没有权限设置,C++中的 struct 增加了访问权限,可以和类一样有成员函数。

       从上不难得出类的定义,那么什么是类呢?

       概念:类是对象的抽象,类是一种广义的数据类型,类是所有面向对象的语言的共同特征,利用这些对象的共同特征为它们建立一个集合,这个集合就称为类,类是定义同一类所有对象的变量和方法的蓝图或原型。(所有面向对象的语言都提供了这种类型)

       类的定义

class className                           
{                                         
   //类体:由函数和变量组成                    
   //一定要注意括号后面要加分号 ";"    
};                                     

struct structName
{
   //定义结构体的变量和函数
   //注意括号后面要加分号 ";
};

    

//声明一个结构体
struct Student               //声明了一个名为Student的结构体类型
{
    int num;
    char name[20];
    char sex;
};
Student stud1, stud2;           //定义了两个结构体变量 stud1 和 stud2

//声明一个类
class Student         //以 class 开头
{
    int num;
    char name[20];
    char sex;               //以上三行是数据成员
    void display()          //这是成员函数
    {
        cout << "num:" << num << endl;
        cout << "name:" << name << endl;
        cout << "sex:" << sex << endl;   //以上4行是函数中的操作语句
    }
};
Student stud1, stud2;   //定影了两个Student 类的对象 stud1 和 stud2


      从上述代码中不难看出,定义类的方法和声明和一个结构体类型相似。

      类中有类头(class  Student)、关键字(class)、类名(Student)、类体(“{}”中的内容)。类中的元素称为类的成员;类中的数据称为类的属性或者类的成员变量类中的函数称为类的方法或者类的成员函数

      既然C++中的类与结构体相似,那么它们有什么区别呢?

      答:相同点--C++兼容了C语言,同时C++允许 struct 定义一个类型,用 struct 声明的结构体类型实际上                                  就是一个类。

             不同点--a)struct 声明的类,如果不作 private 或 public 声明,系统将其成员默认为 public,而 class                                    定义的类, 如果不作 private 或 public 声明,系统将其成员默认为 private。

                           b)在用模版的时候只能写template <class Type>或template <typename Type>

                                 不能写template <struct Type>。

       注:public 、protected 、private 为访问限定符,访问限定符只在编译时有用,当数据映射到内存后,没有方文明限定符上的区别。

       类定义的两种方式 :1、类的声明和定义全部放在类体中

                                       2、类的声明放在 .h 文件中,类的定义放在 .cpp 文件中

       类的成员函数

       性质:成员函数可以访问本类中的任何成员(包括私有和公用的),可以引用在本作用域中的有效数据。

       存储方式:函数代码存储在对象空间之外,对象所占空间取决于对象中数据成员所占的空间。不同对象使用的是同一个函数代码段,怎么能够分别对不同对象中的数据进行操作?这里将涉及到 this 指针,我会在类和对象(二)中详细说明。

       与一般函数的区别:相同点--都有返回值和函数类型

                                       不同点--a)它是属于一个类的成员,出现在类体中;

                                                     b)可以被指定为prixate、public、protected

       在类外定义成员函数:必须在函数名前加上类名,以限定(qualifed),“::”是作用域限定符或作用域运算符,用它声明函数是属于哪一类。若函数名前既无类名又无作用域,则这个函数不是成员函数,而是全局函数,即非成员函数的一般普通函数。

       类作用域

       作用域有局部作用域、全局作用域、类作用域、名字空间作用域。

       类作用域:是类定义的一个新的作用域,类的所有成员都必须处在类的作用域中。类外定义的成员,需要使用 :: 作用域解析符指明成员属于哪个类域。在口的作用域外,只能够通过对象或指针,借助成员访问操作符 . 和   -> 来访问类成员。(成员变量在类中具有全局作用域)

       类的实例化:用类类型创建对象的过程,称为类的实例化。

       对象

       概念:对象是类的具体实例,对象就是类类型的一个变量。(对象(object)是构成系统的基本单位。(客观世界中任何一个事物都可以看成一个对象。对象可大可小,例如学校、一个班级、一个学生、军队中的一个师、一个团、一个连、一个班甚至一篇文章、一个图形、一项计划等都是对象))

       对象的组成:数据、函数、方法

       数据:数据体现了前面提到的“属性”,例如三角形对象的边长(属性是对象的静态特征,举例:一个班级作为对象时,班级所属系和专业、学生人数、所在班级等这种静态特征称为属性)。

       函数:函数是用来对数据进行操作的,以便实现某些功能(举例:通过边长计算出三角形的面积,并输出三角形的边长和面积)。

       方法:计算三角形面积和输出有关数据就是行为(属性是对象的动态特征,举例:一个班级作为对象时,学习、开会、体育比赛等,这种动态特征称为行为),在程序设计方法中也称为方法。

       什么是对象模型?类中各成员在内存中的布局形式。

       类和对象的关系

       1、C++中对象的类型称为类

       2、类代表了某一批对象的共性和特征

       3、类是对象的抽象,而对象是类的具体实例

       4、对象就是类类型的一个变量

       5、类是抽象的,不占内存,而对象是具体的,战友存储空间

猜你喜欢

转载自blog.csdn.net/xiayzn/article/details/80767084