B站链接:【c++面向对象编程速成!90分钟搞定-哔哩哔哩】 https://b23.tv/vC5iBY3
C语言:int a =10
1.int表示整数类,这是系统自带的一个类,a则是这个类的一个对象
2.float,char都是系统自带的类
一、面向对象编程
1.创建自己的类
2.创建自己的对象
3.例如:学生类 student,对象张三李四,好比int a;int n
形式:
class student//这个大括号里的叫类定义
{
string name;//学生的名字
int age;//学生的年龄
}
类名:student
类里两个内容,年龄名字,叫做类的成员数据,或者叫属性,类比Int a = 10,10就是a的属性,
到这里为止,类和C语言的结构体还是一样的。
二、公有和私有的初步概念
在类的定义里,形式如
class student //这个大括号里的叫类定义
{
public:
string name;
private:
int age;
}
name公有:类的外部(主函数里或者其他类)可以读写name的值
age私有:类的外部外面看不到
可以只有public:
1.可以将名字和年龄都写在public,初学者可以先不写private;
2.没有private的类相当于结构体。
三、如何使用一个类
类被定义后,就创造类的对象,形式和int a 一样
student aa;
创造一个student类的对象,名字叫做aa
aa.age=20;//野路子 语法没错
给aa的属性赋值,和结构体一样
根据传入的参数来识别调用哪一个set
阶段总结
构造函数 = aa对象初始化
创建对象时同时给他赋值
class student//类定义里先申明构造函数
{
public:
int age;
string name;
student();//这是构造函数,没有输入值和返回值,并且名字和类一样
student(int a, string b);//同名的构造函数申明,即重载,带2个输入参数,即名字和年龄
//函数名一样,通过输入参数的不同达到区别,这就是重载(reload)
}
student::student()//构造函数定义,特点就是冒号两边时一样的,注意这个函数没有输入值
{
age = 20;//构造函数里,可以对全部的成员数据给一个默认值
name = "小红";
}
student::student(int a , string b)
//这是带参数构造的函数定义,大括号里面是函数定义,前一个student代表类,后一个student代表函数
{
age = a;//这样名字和年龄就不是默认值了,可以动态输入。
name = b;
}
//下面是主函数
student aa;
//新建一个student类的对象,名字叫做aa,这里不用再人工赋值年龄和名字了,将自动调整构造函数给年龄和名字。
student bb(25,"大妹");
//构建函数重载,新建一个student类的对象bb,同时动态输入名字和年龄。
析构函数
析构函数销毁内存数据
对象aa被创建后,其主数据就一直在内存中了,这块内存什么时候被释放?就是使用析构函数的时候。
但主函数中并不能直接运行student aa;delete aa;
只有student * p = new student(20,"张三")//创造一个student类的指针,没有aa这样的名字,只有指针指向它。
delet p才将自动调用析构函数,因为两种储存的内存不同
虽然此时没有aa对象名,但是20与张三已经存在内存之中,只有调用析构函数才能抹掉20与张三
写法与构造函数类型
student::~student()//我看人家代码~在上面
//析构函数名字比构造函数多了一个波浪号,没有输入值,没有返回值
{ cout<<"delete object";}//调用delete p之后会自动出现这个函数并且打印“已删除”