zoukankan      html  css  js  c++  java
  • C++学习5

    类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。

    与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,占用内存空间。

    类的声明

    类是用户自定义的类型,如果程序中要用到类,必须先进行声明,或者使用已存在的类(别人写好的类、标准库中的类等),C++语法本身并不提供现成的类的名称、结构和内容。

    一个简单的类的定义:

    class Student{
        //成员变量
        char *name;
        int age;
        float score;
        //成员函数
        void say(){
            printf("%s的年龄是 %d,成绩是 %f
    ", name, age, score);
        }
    };

    该例创建了一个Student类,它包含了3个成员变量和1个成员函数。

    class是C++中的关键字,用于声明一个类;紧接 class 关键字之后的是我们自定义的类名 Student;由{ }包围的是类体。声明类时不能对成员变量进行初始化,只有在创建对象以后才能赋值。

    类可以理解为一种新的数据类型,该数据类型的名称是 Student。与 char、int、float 等基本数据类型不同的是,Student 是一种复杂数据类型,可以包含基本类型,而且多了很多基本类型中没有的特性。

    需要注意的是:在类声明的最后有一个分号(;),它是类声明的一部分,表示类声明结束了,不能省略。

    创建对象

    声明了 Student 数据类型之后,就可以用它来定义变量了,如:

    Student LiLei;  //创建对象

    该语句声明了一个名字为 LiLei、数据类型为 Student 的变量。

    在定义类的对象时,class 关键字可要可不要。但出于习惯我们通常都会省略掉class关键字,例如:

    class Student LiLei;  //正确
    Student LiLei;  //同样正确

    创建类的对象时,除了能定义单个变量以外,还可以定义一个数组或者指针。例如:

    Student all_student[100];
    Student *pointer;

    第一条语句定义了一个 all_student 数组,该数据拥有100个元素,每个元素都是 Student 类型。第二条语句定义了一个 Student 类型的指针 pointer,该指针可以指向 Student 类型的变量(对象),用法和普通指针一样。

    声明类的同时创建对象

    和结构体(struct)类似,你可以先声明类,然后再创建对象,也可以在声明类的同时创建对象。如下所示:

    class Student{
        //成员变量
        char *name;
        int age;
        float score;
        //成员函数
        void say(){
            printf("%s的年龄是 %d,成绩是 %f
    ", name, age, score);
        }
    }stu1, stu2;

    这个时候你也可以省略类名,直接创建对象。如下所示:

    class{
        //成员变量
        char *name;
        int age;
        float score;
        //成员函数
        void say(){
            printf("%s的年龄是 %d,成绩是 %f
    ", name, age, score);
        }
    }stu1, stu2;

    直接定义对象,在C++中是合法的、允许的,但却很少用,也不提倡用。

    public 是C++中的关键字,用来修饰成员变量和成员函数,表示它们是公有的。我们将在下节详细讲解 public,这里只需要知道,只有 public 后面的成员变量和成员函数才能被创建的对象访问到。像本节开头的例子,没有使用 public,那么创建对象后就不能使用任何成员。

    注意:对象指针指向的是一个具体的对象,而不是类。

  • 相关阅读:
    php测试数据库
    mysql查
    mysql增删改
    mysql数据类型
    Docker 探索安装WordPress+Mysql8.0
    Docker For MYSQL 8.0 特别注意修复数据库新的验证方式
    Docker EE/Docker CE简介与版本规划
    Hyper和Vmware冲突,Device/Credential Guard 不兼容
    利用阿里云加速Docker For Windows
    使用Aliyun Docker 容器镜像/注册表服务
  • 原文地址:https://www.cnblogs.com/Caden-liu8888/p/5787097.html
Copyright © 2011-2022 走看看