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++类的定义和创建的主要内容,如果未能解决你的问题,请参考以下文章