C++面向对象——成员变量与成员函数

概述

1.初始化是赋一个初始值,而定义是分配内存。

2.空类占1字节内存

静态成员变量,静态成员函数,非静态成员函数不在类上,故不算在类所占内存上

3.空指针调用成员函数

空指针可以调用不含调用成员变量的成员函数,调用成员变量的成员函数可以事先判断this是否为空指针

4.成员分为三种:private、protected、public

private可避免成员变量被修改,可在public中设置函数完成对成员变量的赋值。

此时可以在函数中添加对成员变量输入的限制。

此时函数可分为Getter类函数(获取成员变量)与Setter类函数(修改成员变量)。

5.private中的成员变量建议以_开头。

6.private是相对类而言的,同类的对象可以访问该类中的private成员。

7.继承子父类、指针、地址与变量的关系

输出结果:

结论:子类首地址为父类的第一个成员变量的首地址

const成员

1.const函数不可以修改成员属性

2.成员属性声明时加关键字mutable(易变的)后,在const函数中依然可以修改

3.常对象只能调用常函数,若常对象调用非常函数,则会有修改属性的可能(常对象不允许这样做)

常函数在参数列表的右括号后加const

静态成员

1.可以使用static关键字类定义将类成员定义为静态的,默认初始化为0.

2.静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义,实际上是给静态成员变量分配内存。

如果不加定义就会报错。

3.可以在类的外部通过使用解析运算符::来重新声明静态变量从而完成初始化。

4.静态成员函数可以把函数与类的任何特定对象独立开来。

5.静态成员函数即使在类对象不存在的情况下也能被调用,只要使用类名加范围解析运算符 :: 就可以访问。

6.静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。

若静态成员变量没有在类外声明,则不可以被成员函数调用

7.静态成员函数有一个类范围,他们不能访问类的 this 指针。可以使用静态成员函数来判断类的某些对象是否已被创建。

8.静态成员的用处:清楚了解构造与析构函数的调用情况。

9.类中特殊成员变量的初始化问题:

(1)常量变量:必须通过构造函数参数列表进行初始化。

(2)引用变量:必须通过构造函数参数列表进行初始化。

(3)普通静态变量:要在类外通过"::"初始化。

(4)静态整型常量:可以直接在定义的时候初始化。

(5)静态非整型常量:不能直接在定义的时候初始化。要在类外通过"::"初始化。

 
发布了16 篇原创文章 · 获赞 0 · 访问量 373

猜你喜欢

转载自blog.csdn.net/x568059888/article/details/104849115
今日推荐