类和对象
类:同一类事物的统称,一个抽象的概念 //在程序中就是指类型
对象:类的一个具体的实例 //在程序中就是指变量
面向对象编程特征:封装、抽象、继承、多态
1.类的声明
struct 类名 //struct 可以用来声明类,但是默认权限时public
{
private:
私有的数据和成员函数;
public:
公用的数据和成员函数;
};
-------------------------------------------------------------
class 类名 //class专门用来声明类,其默认权限是private
{
private:
私有的数据和成员函数;
public:
公用的数据和成员函数;
}
2.构造与析构
构造函数:类中特殊成员函数,用于做初始化
函数名与类名相同,没有返回值(void都不写)
构造函数可以重载(可以有多个版本)
定义对象时自动调用
析构函数:类中的特殊成员函数,用于做清理
函数名与类名相同且前面有~,没有返回值也没有参数
析构函数不能重载(只有一个版本)
对象销毁时自动调用
//特殊:如果没有会自动生成,强制执行
在类中声明和实现:直接写函数内容
class Demo
{
private:
//data
public:
Demo(void)
{
cout<<"构造函数"<<endl;
}
~Demo()
{
cout<<"析构函数"<<endl;
}
};
在类中声明,在类外实现:要标识类
class Demo
{
private:
//data
public:
Demo(void); //构造函数
~Demo(); //析构函数
int fun(void); //普通函数
}
Demo::Demo(void)
{
cout<<"构造函数"<<endl;
}
Demo:: ~Demo()
{
cout<<"析构函数"<<endl;
}
int Demo:: fun(void) //Demo在返回值类型之后
{
return 0;
}
构造函数在定义时执行,析构函数在函数销毁时执行
1. int main()
{
Demo stu;
cout<<"-------"<<endl;
return 0;
}
结果:
构造函数
---------
析构函数
2. int main()
{
{
Demo stu;
} //stu的生命周期只在括号里
cout<<"--------"<<endl;
return 0;
}
结果:
构造函数
析构函数
--------
3.this指针
this指针:指向对象的指针
仅在类的内部使用
不需要用户定义
当形参与私有数据冲突时,可以使用this指针区分
this->id=id;