c++之类与对象

本文介绍了C++中的类和对象概念,通过王者荣耀的亚瑟英雄为例,阐述了类的属性和方法,并展示了如何在C++中定义类及实例化对象。同时,讨论了面向对象的思想,包括访问限定符public、private、protected的作用,以及对象访问属性和方法的方式。
摘要由CSDN通过智能技术生成

什么是类,什么是对象?

类就是一类具有共同特征的群体
对象是这类群体的某一个具体的个体

上面的描述很迷,接下来我们通过一个游戏的例子来解释一下什么是类,什么是对象。

你现在玩王者荣耀克隆模式,假设十个亚瑟在对线,亚瑟这个英雄就可以说是一个类,而你操作的那个亚瑟是独一无二的,是一个具体的对象。

类的特征—属性和方法

每一个类都有他的属性和方法,我们可以看看亚瑟的属性和方法
亚瑟:
属性:
{
生命
物攻
法强
物抗
法抗
敏捷
//就举例这么多,游戏属性太多了,不说明太多
}
方法: //方法就是能做什么,在游戏里面就是技能
{
1技能:誓约之盾
2技能:回旋打击
3技能:圣剑裁决
}

这就是类

而你玩的那个亚瑟,,是一个对象,相当于把亚瑟这个类实例化成一个有你游戏名的一个具体的个体

c++中类对象的定义

说完了王者荣耀的亚瑟
我们来看看如果在c++中写一个亚瑟类,如何在c++中实例化一个亚瑟的对象

c++中用class定义一个类

class Yase
{
	//属性
	int hp;//生命
	int wg;//物攻
	int fq;//法强
	int wk;//物抗
	int fk;//法抗
	int mj;//敏捷
	//方法 //方法就是一个函数,让这个函数执行一些操作
	void f1(){...};
	void f2(){...};
	void f3(){...};	
};

tips:属性又称为数据成员,方法又称为成员函数

对象的实例化

c++中实例化一个对象有两种方法
1、从栈中实例化

Yase cheng;//cheng是我的游戏名称,在这里我把他当作一个变量存储实例化的对象

Yase heros[10];//实例化一个对象数组,就是一个数组里面有10个实例化的亚瑟对象

2、从堆中实例化

//new 关键字来创建一个对象
Yase *p = new Yase();//p是一个指针,指向一块内存,这块内存存储我创建的对象
Yase *q = new Yase[10];//申请一个对象数组

delete p;//从堆中实例化不会自动释放申请的内存,要自己手动释放
//delete []q;//对象数组要加中括号释放内存	

对象的访问

实例化对象之后我们要进行操作
1、通过栈实例化对象的访问
先实例化一个亚瑟

Yase cheng;
cheng.hp = 300;
cheng.f1();

通过.来访问对象的属性和调用对象的方法

2、通过堆实例化对象的访问
同样先实例化一个亚瑟

Yase *p = new Yase();
p->hp = 300;
p->f1();
delete p;
p = NULL;

通过->访问对象的属性和调用对象的方法

面向对象的思想

c++的访问限定符—public、private、protected

public:公共的,外界可调用
private:私有的,外界不可调用,不可访问

所谓面向对象的思想就是以对象做什么表达程序的逻辑,反应在代码上就是对象调用函数去做一些事,对象所有行为都要通过调用函数完成,对象的属性(数据成员)
要用函数进行封装,不能直接访问。

class Yase
{
public:
	void f1(){...};//1技能
	void f2(){...};//2技能
	void f3(){...};	//3技能
	int getHp(){
		return hp;
	}
	void setHp(int _hp){
		hp = _hp;
	}//这里只举hp的例子
private:
	int hp;//生命
	int wg;//物攻
	int fq;//法强
	int wk;//物抗
	int fk;//法抗
	int mj;//敏捷
};

面向对象的好处,可以对传入对象的参数进行限制,而且可以保证某些属性不给写只能读,就是只能get不能set
例如在setHp(_hp)里可以进行这样的修改

	void setHp(int _hp){
		if(_hp>=0 &&_hp<=100)
			hp = _hp;
		else
			cout << "error" <<endl;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值