目录
类
对象:
属性(静态特征)、操作(动态特征) 类类型定义的变量就叫对象
类:(class)
数据成员、成员函数
类和对象的关系:
类是抽象的,对象是具体的,类是对象的抽象,对象是类的具体。
类的定义:
定义放在.h中记得加上条件编译,{}最后的;不要少掉。成员函数在.cpp中定义。
访问限定符:
public(公有的)、protected(受保护的)、private(私有的),一般来说先public,再protected,最后private。
数据成员最好放在private中,并且只能在类里定义,按类型大小从小到大声明可以提高空间利用率。
类的访问
1、构造函数和析构函数的定义格式
类名+域运算符(::)+(构造/析构)函数名() 注:构造函数和析构函数没有函数类型
2、普通成员函数的定义格式:
函数类型+类名+域运算符(::)+函数名(参数)
3、私有的数据成员的访问:
在类的外部不能直接访问,在类的成员函数可以直接访问,用成员名就可以访问
4、公有的数据成员的访问:
对象名+.+数据成员名
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
私有成员错误访问示例:
类的数据成员修改:
可以定义一个公有的成员函数,如setName(char *pname),或setColor(char *pcolor)等。
指针类型的对象的访问:
对象名->成员名,要用new开空间,会自动调用构造函数
构造函数
1、作用
可以用来对数据成员初始化。
2、什么时候系统会自动调用
创建普通的对象或者用new开一个空间给对象,都会走构造函数。
3、是否可以重载
可以重载,重载的构造函数一般有两个或两个以上参数,叫做普通构造函数。
4、构造函数种类
- 普通构造函数(有两个或两个以上参数)
- 默认构造函数(没有参数,可以不声明,编译器将自动产生一个公共的默认构造函数。注:最好写)
- 复制(拷贝)构造函数
- 类型转换构造函数(一个参数)
- 构造函数使用默认参数
如果一个构造函数的所有参数均有默认值,这时再定义无参数的默认构造函数无意义,会有二义性。
类型转换构造函数:
- 类的构造函数只有一个参数是非常危险的,因为编译器可以使用这种构造函数把参数的类型隐式转换为类类型
- 可以用explicit关键字,编译器不会把声明为explicit的构造函数用于隐式转换,它只能在程序代码中显示创建对象
析构函数
1、作用
撤销对象前做清理工作,一般是释放对象动态申请的空间
2、什么时候系统会自动调用
局部类类型的变量回收或者用delete给变量释放空间,都会走析构函数。
3、是否可以重载
不可以重载。
4、函数声明写法
和构造函数类似,前面多了个~。
5、默认析构函数
如果没有定义析构函数,编译器会自动生成一个默认析构函数,默认析构函数是一个空函数。