对象&类
类用于指定对象的形式,它包含数据的表示方法和用于处理数据的方法。
• 类中的数据和方法称为类的成员。
• 函数在一个类中也被称为类的成员。
定义一个类,其效果是定义一个数据类型的蓝图。它定义了类的对象包括了什么,以及可
以在这个对象上执行哪些操作。
例如:( 通过 class 关键字定义了一个类 DATE,然后又通过 DATE 类创建了一个对象 date)
在函数名最后面用const对成员函数进行声明,表示这个函数不会修改类中的任何数据成员。
如果在编写const成员函数时,不小心作了修改数据成员的操作,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。
类的成员包括:⚫ 数据成员:• 一般说来,数据成员是需要隐藏的;即外部的程序是不能直接访问这些数据的,应该通过函数成员来访问这些数据。 ⚫ 函数成员:• 通过关键字public声明为公有成员(public member)。 |
类与结构体的区别
• 通过结构体定义出来的变量传统上叫变量,因为C语言中的 struct 只能包含变量,不能包含函数
• 而C++通过类定义出来的变量有了新的名称,叫做对象(Object)
类的静态成员
从存储的角度来说,静态(static)成员是类的组成部分,但不是任何对象的组成部分
定义方式:
通过在成员声明前加上保留字static将成员设为static,具体如下:
• 在数据成员的类型前,加保留字static声明静态数据成员;
• 在成员函数的返回类型前,加保留字static声明静态成员函数;
访问方式:
⚫static成员遵循正常的公有/私有访问规则。
⚫如果访问控制允许的话,可在类作用域外直接访问静态成员函数,不需通过对象,需加上类名和:: (如果是静态数据成员,则在外部再定义完一次后,再使用时就不再需要加类名和::)
◼静态数据成员
• 静态数据成员具有静态生存期,是一个类的所有对象的属性,而不是某个对象的属性。它的储存空间是一个类所有对象共享的。
• 与非静态数据成员不同,静态数据成员必须在类定义体的外部再定义恰好一次。通常是在类的实现文件中再定义这一次,而且定义时不能再用static修饰。
◼静态成员函数
• 静态成员函数不属于任何对象
• 静态成员函数没有this指针
• 静态成员函数不能直接访问类的非静态成员(因为不知道是访问哪个对象的),只能直接访问类的静态成员。
例如,定义静态数据成员static int count,和静态成员函数static void getcount()
//count再定义完一次后就可以直接用
// 注意静态函数对象访问方式