C++类的定义和创建

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++类的定义和创建相关的知识,希望对你有一定的参考价值。

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

类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。

定义一个简单的类:

class Student{

public:
      //成员变量
      char *name;
      int age;
      float score;

      //定义类方法
      void speak(){
      cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;

      }


};

注意:类定义的最后有一个分号;,它是类定义的一部分,表示类定义结束了,不能省略。

类的创建:

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

可以省略掉class。

还可以创建对象数组:Student allsu[100];

类成员的访问:

创建对象以后,可以使用点号.来访问成员变量和成员函数,这和通过结构体变量来访问它的成员类似

#include <iostream>
using namespace std;

//类通常定义在函数外面
class Student{
public:
    //类包含的变量
    char *name;
    int age;
    float score;
    //类包含的函数
    void say(){
        cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
    }
};

int main(){
    //创建对象
    Student stu;
    stu.name = "小明";
    stu.age = 15;
    stu.score = 92.5f;
    stu.say();

    return 0;
}

使用对象指针:

上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址

Student stu;
Student *pStu = &stu;


pStu 是一个指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。

也可以在堆上创建对象,这个时候就需要使用前面讲到的new关键字

Student *pStu = new Student;

栈(Stack)和堆(Heap)是 C/C++ 程序员必须要了解的两个概念

在栈里面创建的对象,不必须要指针,因为创建之后就会有个对象名字,但是通过new创建的对象,堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。

对象指针后,可以通过箭头->来访问对象的成员变量和成员函数,这和通过结构体指正来访问它的成员类似

 

栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。在实际开发中,new 和 delete 往往成对出现,以保证及时删除不再使用的对象,防止无用内存堆积。

pStu -> name = "小明";
pStu -> age = 15;
pStu -> score = 92.5f;
pStu -> say();

小例子: 

#include <iostream>
using namespace std;

class Student{
public:
    char *name;
    int age;
    float score;

    void say(){
        cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
    }
};

int main(){
    Student *pStu = new Student;
    pStu -> name = "小明";
    pStu -> age = 15;
    pStu -> score = 92.5f;
    pStu -> say();
    delete pStu;  //删除对象

    return 0;
}

虽然在一般的程序中无视垃圾内存影响不大,但记得 delete 掉不再使用的对象依然是一种良好的编程习惯。

 

以上是关于C++类的定义和创建的主要内容,如果未能解决你的问题,请参考以下文章

C++类的定义和创建

C++类的组合和聚合

这些 C++ 代码片段有啥作用?

C++学习笔记1:类的使用

创建 C++ 类的存根版本

成功创建c ++类和对象[重复]