类和对象

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。
与结构体一样,类只是一种 复杂数据类型 的声明(有别于普通数据类型在于类这种数据类型, 是一个包含成员变量和成员函数的集合 ), 不占用内存空间 (所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据)。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间(可以给成员变量进行赋值)。
(有些教程将类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。在面向对象的编程语言中,经常把函数(Function)称为方法(Method))

类的定义:
类是用户自定义的类型,通过 class 关键字来定义(类名的首字母一般大写,并且定义在函数外面)
对象的定义:
(1)一种是在栈上,通过类名(可看成一种新的数据类型)来定义,class关键字可加可不加一般省略。(把对象看做一个变量)
(2)另一种是在堆上创建,必须要用一个指针指向它。

访问类的成员: (栈上)
创建对象以后,可以使用点号.来访问成员变量和成员函数,这和通过结构体变量来访问它的成员类似。
使用对象指针:
栈上:Student *pStu = &stu;
(在栈上创建出来的对象都有一个名字,比如 stu,使用指针指向它不是必须的)
堆上:Student *pStu = new Student;
(在堆上分配内存,没有名字,必须要用一个指针指向它)

栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。在实际开发中,new 和 delete 往往成对出现,以保证及时删除不再使用的对象,防止无用内存堆积。
有了对象指针后,可以通过箭头->来访问对象的成员变量和成员函数,这和通过结构体指针来访问它的成员类似。

类的成员变量和成员函数:
类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。在定义类的时候不能对成员变量赋值,因为类只是一种数据类型或者说是一种模板,本身不占用内存空间,而变量的值则需要内存来存储。
类的成员函数也和普通函数一样,都有返回值和参数列表,它与一般函数的区别是:成员函数是一个类的成员,出现在类体中,它的作用范围由类来决定;而普通函数是独立的,作用范围是全局的,或位于某个命名空间内。
成员函数定义要求:
(1)在类体中直接定义函数时,不需要在函数名前面加上类名,因为函数属于哪一个类是不言而喻的。
(2)但当成员函数定义在类外时,就必须在函数名前面加上类名予以限定。::被称为域解析符(也称作用域运算符或作用域限定符),用来连接类名和函数名,指明当前函数属于哪个类。
(3)成员函数必须先在类体中作原型声明,然后在类外定义,也就是说类体的位置应在函数定义之前。

访问权限:
C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符(默认private)。所谓访问权限,就是你能不能使用该类中的成员。
在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。
private 关键字的作用在于更好地隐藏类的内部实现,该向外暴露的接口(能通过对象访问的成员)都声明为 public,不希望外部知道、或者只在类内部使用的、或者对外部没有影响的成员,都建议声明为 private。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值