C++学习之旅第一站:类
Posted ITWEL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习之旅第一站:类相关的知识,希望对你有一定的参考价值。
一.类的定义与对象的创建
(一).类
I.定义
简单来说,类是相较于C语言中的“结构体“”而言更为全面的数据类型声明,并不占用内存空间,只有在“类的实例化(通过类名创建对象)”过程中才会需要内存空间,其区别在于结构体中仅包括“成员变量”(基本类型变量或者是结构体类型变量),而类中不仅可以包含“成员变量”,也可以包含对成员变量进行操作的“函数”
实例如下:
//C语言中的结构体
struct Student
//成员变量
int number;// 排名
char *name;//学生姓名
int grate; //学生成绩
;
//输出函数
void Printf(struct Student ud)
printf("排名为%d的同学是%s,他的成绩是%d",ud.number,ud.name,ud.grate);
int main()
struct Student ud; //定义一个类型struct Student变量ud
ud.number=3; //成员变量的初始化
ud.name="小明";
ud.grate=96;
Printf(ud); //函数调用
II.类结构定义
关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表
III.类成员访问方式
方法一:通过“ . ”访问
创建对象后,可以通过“ . ”来进行访问成员
实例如下:
int main()
//通过类来定义变量,即创建对象
class Student stu1; //也可以省略关键字class
//为类的成员变量赋值
ud.number = 3;
ud.name = "小明";
ud.score = 96;
//调用类的成员函数
ud.Print();
return 0;
方法二:通过“->”(对象指针)访问
对象指针:就是指向对象的一个指针,通过指针对成员进行操作
实例如下:
(1)在栈(Stack)上创建对象
int main()
//通过类来定义变量,即创建对象
class Student stu1; //也可以省略关键字class
class Student *ud=&stu1;
//为类的成员变量赋值
ud->number = 3;
ud->name = "小明";
ud->score = 96;
//调用类的成员函数
ud->Print();
return 0;
(2)在堆(Heap)上创建变量
int main()
//通过类来定义变量,即创建对象
class Student *ud=new Student;
//为类的成员变量赋值
ud->number = 3;
ud->name = "小明";
ud->score = 96;
//调用类的成员函数
ud->Print();
delete ud; //一定要记得删除,释放空间,防止堆积
return 0;
(3)堆和栈存储区别
I.在栈上创建的对象是有名字的,不用指针指向也可以找到它;但是在堆上创建的对象是没有名字的,我们需要通过指针来指向它,才能访问其成员变量和成员函数
II.栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除.
(二).对象(object)
在C语言中可以通过结构体名来定义变量,在 C++ 中可以通过类名来定义变量。不同的是,通过结构体定义出来的变量还是叫变量,而通过类定义出来的变量有了新的名称,叫做对象(Object)。
实际例子如下:
//通过class关键字类定义类
class Student
public:
//类包含的变量
char *name; //学生姓名
int number; //学生名次
int score; //学生成绩
//类包含的函数
void Print()
printf("排名为%d的同学是%s,他的成绩是%d",number,name,grate);
;
int main()
//通过类来定义变量,即创建对象
class Student stu1; //也可以省略关键字class
//为类的成员变量赋值
ud.number = 3;
ud.name = "小明";
ud.score = 96;
//调用类的成员函数
ud.Print();
return 0;
在 C++ 中,通过类名就可以创建对象,这个过程叫做类的实例化,因此也称对象是类的一个实例
(Instance)。
有些资料也将类的成员变量称为属性(Property),将类的成员函数称为方法(Method),
在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。
(三).数据类型图(回顾)
(四).拓展(new与malloc用法)
I.new用法
(1)结构
//创建
(数据类型)*(变量名)= new (数据类型)[变量个数];
//销毁
delete[]变量名;
(2)具体使用演示
//例1
int *a=new int ;//创建
delete a; //销毁
//例2
int *a=new int[5];
delete[]a;
II.malloc的用法
(1)结构
//创建
(数据类型)*(变量名)=(数据类型 *)malloc(sizeof(数据类型)*(变量个数))
//销毁
free(变量名);
(2)具体使用演示
int *a = (int *)malloc(sizeof(int)*5);//创建
free(a); //释放
注意:new和delete配套使用,malloc与free配套使用
二.类的成员变量与成员函数
(一)定义
类简单来说为一种抽象的数据类型,普通数据类型仅包含“成员变量”,而类中既包含“成员变量”又包含“成员函数”
(1)类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存,定义类的时候不能对成员变量赋值,类是一种数据类型定义,不占用内存空间,只有在用类定义对象时才会占用空间
(2)类的成员函数也和普通函数一样,都有返回值和参数列表,它与一般函数的区别是:成员函数是一个类的成员,出现在类体中,成员函数的作用范围由类来决定;而普通函数是独立的,作用范围是全局的或在某个命名空间内。
(二)成员函数
如果函数是在类中被定义,则为内联函数,反之,则不是
//方式1
using namespace std;
class Student
public:
int number;
char *name;
int score;
public:
void Print();//函数声明
//函数定义
viod Student::Print()
cout<<name<<"的名次为"<<number<<"成绩为"<<score<<endl;
//方式2
using namespace std;
class Student
public:
int number;
char C++探索之旅第一部分第九课:数组威武,动静合一