C++类的总结

1、类的概念

类是一种由程序设计者自己定义的数据类型,在解决实际问题种,经常需要根据自己的需求定义数据类型,这样的数据类型包括数据和功能。类的基本思想是数据抽象和封装,类的接口包括用户包括用户能执行的操作,类的实现则包括类的数据成员,负责接口实现的函数体及定义类所需的各种私有函数。

2、类的定义


class 类名 {
成员列表
};

1,类成员一般是由数据成员和成员函数两部分组成。每个类可以没有成员,也可以有多个成员。可以为其设置不同的访问权限(这也是类与结构体的区别)通过访问限定符标明:public(公有);private(私有);protected(保护) 。
2,接口就是外界能够借助访问的窗口,成员函数一般是类的接口,类外可以访问,访问某些数据,以便于实现某些功能。数据成员一般是被保护起来的私密对象,不可以随意访问。 3,成员函数可以在类外定义,要加::作用域声明符号,表示属于某个作用域。 内联函数的好处是调用速度更快,缺点占用内存(每调用一次都相当于定义一次)外部定义的函数,就不会被当作内联函数。
2、访问控制和封装

控制对类中不同成员的访问,对客户程序员隐藏实现信息,客户程序员只对类的接口编程。
简单来说:访问限定有public限定和private限定(protect类似于private,主要用于继承),类外访问类内成员还可以通过友元的方式(会在之后详细说明),但不建议使用,因为会破坏类的封装性。
访问限定符说明:

  1. public成员在类外可以直接访问,就是都可以访问,谁都可以看见。;
  2. protected和private成员在类外不能够访问,private限定是私有限定,属于被保护的类型。从这就可以体现封装的思想,把数据封起来,不对外公布。;
  3. 限定符的作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
  4. class定义的类体中如果没有定义限定符,则默认访问权限是private;struct默认为为public型

3、类的类外使用

先声明类变量,再使用,使用方法有三种:
通过对象名和对象成员引用运算符 (.)
Test aa;
aa.函数名;

通过指向对象的指针和指针成员引用运算符 (->)
Test *p;
p= new Test;
p->函数名;

通过对象的引用变量和对象成员引用运算符 (.)
Test aa, &r = aa;
r.函数名;

4、友元
类的友元可以是:
1、全局函数
2、另一个类的成员函数
3、另一个类(类A是类B的友元表示A的所有成员函数都是B的友元)
一般情况下友元会破坏类的封装性,因此,应该尽量避免使用友元。

5、构造函数

为什么要使用构造函数而不直接赋值。
构造函数给数据成员初始化。直接赋值时相当于申请内存,类是一种数据类型,在没有实际使用前没有相应的内存空间的。只有通过构造函数赋值。如果数据成员是公有的,那么可以在类外直接对它初始化,但如果是私有的,那么就不能直接访问它,这就要用到构造函数。

构造函数就是用来处理对象的初始化问题,构造函数是一种特殊的成员函数,不需要人为调用,而是在对象建立的时候自动被执行。构造函数时至少写两个,一个带参,一个不带参,解决说明对象时没有给实参的问题。
书写构造函数的规范:
1、构造函数没有返回类型,函数名和类名相同。
2、初始化的次序和对象声明的顺序一致。

默认构造函数:没有显式的定义构造函数时系统默认生成的构造函数。若类中只有有参的构造函数而没有无参构造函数,系统会报错(所以一般还要定义一个不带参数的构造函数)。若类中一个构造函数都没有,那么系统默认生成默认构造函数。
拷贝构造函数:用已生成的对象初始化另一个对象

如果需要初始化的是类类型的成员,则必须使用构造函数初始化列表。赋值是行不通的。

委托构造函数:有一个成员初始化列表和一个函数体。成员初始化列表只有唯一一项,即类名本身。类名后面紧跟着圆括号括起来的参数列表,参数列表必须与类中另一个构造函数相匹配。当一个构造函数委托给另一个构造函数时,收委托的构造函数的初始化列表和函数体依次执行,然后将控制权交还给委托者的函数体。

6、析构函数

将释放内存的语句写在析构函数中,系统在程序运行结束后自动执行析构函数,进行内存的释放和对象的销毁。析构函数的名字时类名字前面加波浪线“~”。析构函数没有返回类型,也没有任何参数。析构函数不能重载(构造函数可以重载),只能为一个类定义唯一一个析构函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值