C/C++教程

C++类和对象:类的定义和对象的创建

本文主要是介绍C++类和对象:类的定义和对象的创建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C++ 中的类可以看作是结构体(Struct)的升级,类的成员不但可以是变量,还可以是函数。

在C++中,可以用struct和class定义类,都可以继承。区别在于:struct 的默认继承权限和默认访问权限是public,而class的默认继承权限和默认访问权限是private。

1. 类的定义

class Student{
public:
    // 内联
    void say(){
        cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
    }
private:
    string name;
    int age;
    float score;
};

class 关键字定义类。Student 是类的名称,类名的首字母一般大写,以和其他的标识符区分开。{ }内部是类所包含的成员变量和成员函数,由{ }包围起来的部分有时也称为类体,和函数体的概念类似。public 表示类的成员变量或成员函数具有“公开”的访问权限,private 表示具有“私有”的访问权限。

类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。

2. 创建对象

两种创建对象的方式:一种是在栈上创建,形式和定义普通变量类似;另外一种是在堆上使用
new 关键字创建,必须要用一个指针指向它,需要 delete 掉不再使用的对象。

2.1 在栈上创建对象

class Student
{
    // ... 
}

Student zhangSan;   // 创建对象

2.2 在堆上创建对象

使用 new 关键字在堆上创建对象

Student *pStu = new Student;

在栈上创建出来的对象都有一个名字,比如 stu,使用指针指向它不是必须的。但是通过new 创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。

也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。

栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。

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

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

通过对象名字访问成员使用点号.,通过对象指针访问成员使用箭头->,这和结构体非常类似。

这篇关于C++类和对象:类的定义和对象的创建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!