- private:只读属性,不可被外界修改
public:可被外界修改读取
2. 对象的实例化
从栈中实例化:class TV{} TV tv或是TV tv[20]
从堆中实例化:class TV{} TV *p=new TV()或是TV *q=new TV[20]
需要注意的事从堆中实例化后需要通过delete p 或是delete []q释放内存
3. 对象成员访问方式
从栈中实例化:TV tv;tv.type=0;tv.changevol();
TV tv[20];tv[1].type=0;tv[1]changevol();
从堆中实例化:TV *p=new TV();p->type=0;
TV*q=new TV[20];p[1].type=0;
4. 构造函数
1.构造函数的规则及特点:
a.构造函数在对象实例化时被自动调用且仅调用一次;
b.构造函数与类同名;
c.构造函数没有返回值,不写数据类型;
d.构造函数可以有多个重载形式;
e.实例化对象时仅用到一个构造函数;
f.当用户没有定义构造函数时,编译器自动生成一个构造函数,该函数没有做任何事;
2.构造函数写法:
无参构造函数:类名(){。。。。。。}
有参构造函数:类名(形参){。。。。。。}
3.拷贝构造函数:写法:类名(const类名&变量名),当通过同类型的对象实例化另外的对象时,自动调用拷贝构造函数。
4.初始化列表:初始化列表可同时初始化多个数据成员,且只能用于构造函数,用法为 类名():数据成员(值),数据成员(值){},其特殊作用在于private中的const类型成员只能通过该方式进行初始化。
5.析构函数
使用方法:~类名(){。。。。。。}
用处:函数执行完后自动释放资源
特点:1.如果没有自定义的析构函数则系统自动生成
2.析构函数在对象销毁时自动调用 3.析构函数没有返回值、没有参数也不能重载
6.类外定义
即成员函数在类中声明,在类外定义,用法为 数据类型 类名::函数名{},包括同文件定义与分文件定义,分文件定义即为在.h文件中定义类并声明函数,再在.cpp文件中定义成员函数,定义时.cpp文件需包含头文件#include"类名.h",最后用另一个.cpp文件进行编译,同样包含头文件#include"类名.h"。
对象的生命历程:
申请内存->初始化列表->构造函数->参与运算->析构函数->释放内存