类和对象的创建和使用

  • 类的声明与定义
  • 类的声明
  • 类的定义
  • 对象的创建和通过对象访问类的成员
  • 对象
  • 对象访问类的成员


类的声明与定义

在现实世界中,经常有属于同一类的对象。例如,你的自行车只是世界上很多自行车中的一辆。

类:在面向对象软件中,利用对象的相同特征为它们所建立的一个集合。

类的声明

类的声明主要包含两个部分:成员变量和成员函数。

声明一个类的格式如下:

class 类名
{
    public:     // 类的公有成员
        int A;     // 公有的成员变量
        void PublicFunc();     // 公有的成员函数
    private:     // 类的私有成员
        long B;     // 私有的成员变量
        void PrivateFunc();     // 私有的成员函数
    public:     // public,private 块可以多次交替出现
        double C;
};     // 注意不要忘了最后的分号

访问性:

  • public:公开访问性,代表这个成员能在类的定义以外的地方被使用
  • private:私有访问性,代表这个成员只能在类的定义内被使用
    例如:
class Test
{
    public:
        int a;
    private:
        int b;
};
int main()
{
    Test t;
    t.a = 10;     // 访问公有成员变量,正确
    t.b = 10;     // 访问私有成员变量,错误
}

类的定义

类的定义,指的是根据声明具体实现类的功能,与一般的函数定义很相似。

例如:

class Test
{
    public:
        int a;
        void PubFun();
    private:
        int b;
        void PriFun();
};     // 声明一个带有两个成员函数的类

void Test::PubFun()     // 定义公有的那个成员函数
{
    a = 10;
    b = 10;     // b 是私有成员变量,只能在成员函数的定义中访问
}
void Test::PriFun()     //定义私有的那个成员函数
{
    a = 20;
    b = 20;     // b 是私有成员变量,只能在成员函数的定义中访问
}
  • 定义普通函数与成员函数的不同点:
    定义成员函数时在函数名前加了 类名:: 的前缀。
    其中,作用域运算符 :: 指明了成员函数所属的类。

对象的创建和通过对象访问类的成员

对象

类只是一种形式化的定义,要使用类提供的功能,必须使用类的实例,即对象,一个类可以定义多个对象,而对象要占据一定的内存空间。
类和对象的关系就像整形和变量的关系。

每个对象都包含类中定义的各个数据成员的存储空间共享类中定义的成员函数

对象的创建格式:类型名 变量名

例如:

class Test
{
    //此处省略 Test 类成员
};
int main()
{
    int a;     // 声明一个普通变量
    Test t1;     // 创建一个类的对象
}

对象访问类的成员

通过对象也可以访问一个类的成员,通过 . 成员运算符

格式:对象名.成员名

如果是数据成员,就可以对它进行赋值,如果是函数成员,就可以调用它。我们可以将其看做为一般变量,只是在变量名前面多了代表它所属对象的前缀。

  • 如果是数据成员,就可以对它进行赋值
  • 如果是函数成员,就可以调用它
    我们可以将其看做为一般变量,只是在变量名前面多了代表它所属对象的前缀。

例如:

#include <iostream>
class Test
{
    public:     // 两个公有成员
        int a;
        void Hello();
};
void Test::Hello()     // 定义 Test 类的公有函数
{
    std::cout << "Hello " << a << std::endl;
}
int main()
{
    Test t1;
    t1.a = 10;     // 给 t1 对象的数据成员 a 赋值
    t1.Hello();     // 调用 t1 对象的成员函数 hello
}
//注意:访问成员时要注意成员的访问性