ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-08-27 16:02:34  阅读:138  来源: 互联网

标签:定义 对象 成员 创建对象 C++ Student 变量 指针


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++,Student,变量,指针
来源: https://www.cnblogs.com/cscshi/p/15194087.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有