类
定义: class + 类名
class student
{
public :
char var;
void function();
private:
char value;
};
对象
通过类定义出来的变量就是对象,对象就是类的实例化。
1.直接定义的对象
student my; // student 就是类 my就是对象
2.在堆里面定义对象
student *my1 =new student;
删除对象(只能删除堆里面的对象)
删除对象的意义:释放堆里面的内存
delete my1;
访问对象
普通变量通过.来访问;指针通过->
my.var
my1->var
类的函数成员
因为类里面的成员不仅可以是变量,也可以是函数。
第一步:在类里面声明
第二步:实现这个函数。我们可以在类的里面写,也可以在类的外面。
1.直接写在类的里面
class student
{
public:
char var;
void function()
{
cout<<7<<endl;
};
};
2.写在类的外面
class student
{
public:
char var;
void function();
};
void student::function()
{
cout<<7<<endl;
}
注:访问类里的函数和访问变量是一样的
类的访问修饰符
类的访问修饰符就是对类的成员进行权限管理。
public:表示函数和变量是公开的,任何人对可访问;
private:表示函数和变量只能在自己的类里面自己访问自己。不能通过对象来访问。
my.value // 是不能访问的
可通过类里函数进行访问private定义的变量。
void function()
{
my.value=7;
};
protected:表示函数和变量只能在自己的类里面自己访问自己,但可以在派声类来访问的。
类函数重载特性
类函数的重载特性就是我们可以在类里面 定义同名的函数,但是参数不同的函数。
class student
{
public :
char var;
void function();
void function(int q); // 重载函数
private:
char value;
};
重载函数在调用时,会根据参数的类型,然后区匹配相应的函数去调用。
构造函数和析构函数
析构函数:假如我们定义了析构函数,当对象被删除或者声明周期结束时,就会触发析构函数。
构造函数:假如我们定义了构造函数,就会触发这个构造函数
定义构造函数和析构函数:
1.构造函数和析构函数的名字必须和类名一模一样。
2.析构函数要在前面加上一个~
class student
{
public :
student(); // 在对象被创建时,才会触发构造函数
~student(); //对象被删除或生命周期结束时,才会触发析构函数
char var;
void function();
private:
char value;
};
void student::student() // 在对象被创建时,才会触发构造函数
{
cout<<"q" <<endl;
}
void student::~student() //对象被删除或生命周期结束时,才会触发析构函数
{
cout<<"88" <<endl;
}
构造函数可以被重载,析构函数不能被重载。
注:只能重载在堆里面定义的对象。
类的继承
类的继承允许我们在新类里面继承父类的public和protected部分,private是不能被继承的。
当我们觉得这个类不好的时候,是可以使用类继承,添加我们需要的功能。
class mystudent:public student
{
public:
int age;
}
访问方式相同
class student
{
public :
char var;
void function();
void function(int q); // 重载函数
private:
char value;
};
class mystudent:public student
{
public:
int age;
};
int main()
{
student my;
mystudent my2;
my2.age=7;
}
虚函数和纯虚函数
虚函数:有实际定义的,允许派生类对他进行覆盖式的替换,virtual来修饰。
纯虚函数:没有实际定义的虚函数就是纯墟函数。
用virtual来修饰,虚函数是用在类的继承上的
class student
{
public :
char var;
void function();
void function(int q); // 重载函数
virtual void function1(); // 虚函数
virtual void function2(){} //纯虚函数
private:
char value;
};
class mystudent:public student
{
public:
int age;
void function1()
{
cout<< 8 <<endl;
}
};
void student::function1()
{
cout<< 7 <<endl;
}
// 引用虚函数
mystudent my2;
my2.function1(); // 结果8 派生类对父类的虚函数进行覆盖式的替换
优点:便于分工式开发