类的知识点总结

         	前一段时间我们学习了结构体这个知识点,这个学期也被提醒了,类和对象是最主要的知识点,也是比较抽象的,比较难以理解的,相对于结构体来说,结构体就是开放性的,而对于类来说,我们能够对类内容进行保密,从而达到我们想要的保密效果。
类最重要的就是对类的封装,即类内的内容有访问的限制,从而达到保密的效果,因此,累内的数据成员默认为私有类型,不能随便阅读,而结构体则是共有类型,能在任何情况下被读取。
结构体:struct 类名{
									public:
									公有成员声明;
									private:
									私有成员声明;
									protected:
									被保护成员生命;
									};
类:class 类名{
									public:
									公有成员声明;
									private:
									私有成员声明;
									protected:
									被保护成员生命;
							};
有上述看来,结构体的定义与类几乎一样。

类与结构体的有一个很大的区别,就是类内可以定义函数,对于结构体来说,成员的类型默认是共有的,因此没有必要在结构体内定义,而且函数有一个很重要的特点就是必须是共有类型。

类之中有一个特殊的用法,就是友元,友元可以破坏封装程度,一般只会在运算符重载中出现。

构造函数在创建对象时被自动调用,负责初始化对象
构造函数的名字和类名字相同,它没有返回类型
是没有返回类型,不是返回void 类型
构造函数的参数通常为数据成员提供初始值
构造函数可以重载
在创建对象时,编译器会根据初始值的类型和个数来调用相应的构造函数
构造函数的形式决定了初始化对象的方式
例如:
class X {
int m, &r;
public:
X(int v):r(m) { m = v;}
};
委托构造函数
ClassName(参数表):ClassName(参数表){函数体}
析构函数负责在对象生存期结束时返回相关资源和自动释放资源
当对象离开作用域时,或者用delete 释放在堆上创建的对象时,析构函数都会被自动调用
析构函数的名字是类名字前加波浪线“~”
析构函数没有返回类型,也没有任何参数
析构函数不能重载,只能为一个类定义唯一一个析构函数

const 数据成员
const 可以限定类中的数据成员,描述对象中的常量
在数据成员声明前加const 关键字就将其限定为常量
const 数据成员在构造函数的初始化列表中初始化
创建对象时初始化其中的const 数据成员,之后const 成员的值在对象的整个生存期中都不会改变
声明const成员函数的语法形式::
返回类型 成员函数名(参数表) const;
定义const成员函数的语法形式::
返回类型 成员函数名(参数表) const { 函数体 }
Ps:只有声明为const 的成员函数才可以被const 对象调用
const 对象不能调用非const 成员函数
非const 对象可以调用const 成员函数
const 成员函数中不能修改类的数据成员
const 成员函数中不能调用其他非const 成员函数

static数据成员
static数据成员被当作该类类型的全局变量
对非static数据成员,每个对象都有自己的副本
static数据成员对整个类类型只有一个,由这个类型的所有对象共享访问
优点:
1)static数据成员没有进入成员的全局作用域,只是在类作用域中,不会与全局域中的其他名字产生冲突
2)static成员仍然遵循访问控制规则 ,可以实现信息隐藏,static成员可以是private成员,而全局变量不能
static成员只能定义一次
定义一般不放在头文件中,而是放在包含函数定义的源文件中
成员访问运算符“.”或“->”

普通的函数指针不能指向成员函数,即使参数表和返回类型相同
因为成员函数还有一项信息,即所属的类
定义指向成员函数的指针时也要指明成员函数的类类型
基本语法:
返回类型 (类名::*指向成员函数的指针)(参数表);

在类中还要注意一点,就是get函数在引用的过程中,对私有数据的使用就要用get例如getname。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值