有关类的知识点

类:结构体中的函数被称为成员函数,结构体中的数据被称为数据成员,扩展的结构体被称为类,结构体类型的变量被称为对象。
成员数据类内初始化:类内初始化直接初始化数据成员,没有初始值的成员将被默认初始化。数据成员类内初始值只能放在等号右边,或者是花括号里面,不能用圆括号()。
成员函数可以直接在类内定义也可以在类外定义,成员函数在类外定义时,函数的前面要加类名字和作用域符“:”。
访问控制:
struct 类名
{
public:
公有成员说明;
private:
私有成员说明;
protected:
被保护成员说明;}
需要隐藏的信息需要声明为private。private成员只能由类自己的成员函数或友元访问。
一个访问限定符的作用会持续到出现下一个访问限定符或类定义结束。如果没有访问限定符,struct成员的默认访问限定为public。
类与对象:
将数据和操作捆绑在一起,并加上访问控制,成为封装
数据描述对象的属性,操作描述对象的行为。
类是一种数据类型,对象是这种类型的变量,发送消息就是调用数据成员。
== 面向对象编程的主要工作就是创建一组对象并给他们发送消息。==对象能够持有的数据和接受的消息由它们所属的类决定。类决定是面向对象编程的核心。
如果class成员没有设置访问限定符,则默认为private.
this指针
每个成员函数都有一个隐含的参数,指向接受消息的对象,成为this指针。this指针是一个常量,含有当前实施调用的对象地址。不能改变this指针的值,也不能取this指针的地址。
this指针在成员函数中的用途:
区分与局部变量重名的数据成员,返回当前对象,获取当前对象的地址。
访问器与修改器
将数据限定为private,并提供public成员函数对其进行访问,将这种成员函数被称为访问器与修改器。
访问器函数一般命名为geXX,修改器函数一般名为setXX.
友元
friend如果想让非成员函数访问一个类中的私有数据,应该在类中将这个函数声明为friend。
一个类的友元可以访问该类的私有数据。友元必须在被访问的类中声明。
构造函数
构造函数是一类特殊的成员函数,能够在创建对象时被自动调用。负责对象的初始化。构造函数的名字与类的名字相同,它没有返回类型(不是返回void类型),构造函数的参数通常为数据成员提供初始值。构造函数可以重载。
构造函数初始化列表:
类中的有些成员不能使用赋值的方式提供初始值,例如:引用成员,const数据成员,类类型的数据成员。
构造函数(参数列表):初始化列表{函数体}
X(int a,int b):m(a),n(b) { }
写在初始化列表中,直接初始化数据成员,效率更高。
注意:在初始化列表中,每个成员只能出现一次,成员初始化的顺序与它们在类定义中出现的顺序一致。初始化列表中初值排列的顺序不影响实际的初始化顺序,如果可能的话,尽量避免用某些成员初始化其他成员。
析构函数
析构函数负责在对象生存期结束时返回相关资源和自动释放资源。当对象离开作用域时,或者用delete释放在堆上创建的对象时,析构函数就会被自动调用。析构函数主要被用来放弃在类对象的构造函数或生存期中获得的资源,如释放互斥锁或归还new分配的空间。如果在类中没有定义析构函数,编译器会在需要时会自动合成一个析构函数。
析构函数的名字是类名字前加波浪线"~",析构函数没有返回类型,没有参数,不能重载,只能为类定义唯一一个析构函数
const成员
在数据成员前加const就将其限定为常量。const成员在构造函数的初始化列表中初始化。创建对象时初始化其中的const数据成员,之后const成员的值在对象的整个生存期中都不会改变。
const成员函数:
一个类的对象也可以限定为const常量。
将一个成员函数声明为const,表示整个成员函数都不会对对象的数据成员,能保证对象的常量性。
返回类型 成员函数名(参数表)const
返回类型 成员函数名(参数表) const {函数体}
对于类外定义的成员函数,必须在他的定义和声明中同时指定const。
只有声明为const的成员函数才可以被const对象调用。const对象不能调用非const成员函数,非const对象可以调用const成员函数。
static成员
static数据成员对整个类类型只有一个,有这个类型的所以对象共享访问。
satic数据成员没有进入成员的全局作用域,只是在类作用域,不会与全局域中的其他名字产生冲突。
static数据成员属于整个类,不属于某个对象。
static数据成员在类定义之外初始化,使用类名字限定。
定义一般不放在头文件中,而是放在包含函数定义的源文件中。
可以用static const定义类中的常量,static const 数据成员在类外初始化,数值类型的static const 可以在类定义里初始化。其他类型不能在类中初始化。
认识:
对于类,我们要写一个类,首先我们要想我们要写的类要实现什么功能,具体要怎么实现,这个功能的实现需要什么,要明确类的数据成员。比如一个ATM机,要考虑它的功能,它可以用来转账,存钱,取钱,可以查询余额,所以我们实现一个ATM机的类要实现这些基础功能,ATM类需要银行卡,银行卡密码,还有例如一个学生类:首先学生需要姓名,学号,专业班级,还有课程成绩,课程学分,每个人的学分绩点,一个学术类必须具有这些基本元素,还有基本的是求每个学生的学分绩点,求出每个学生学分绩点。
所以写一个类首先要明确自己要写的类要实现什么功能,必须具备什么元素,只要思路明确,只有先想好类的功能和元素,才能写好一个类。想好思路才能写出函数来实现功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值