资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C++类与对象-创新互联

前言(类的基本概念)

1、现实世界的事物所具有的共性就是每个事物都具有自身的属性, - -些自身具有的行为,例如一个学生有姓名、性别、年龄等属性,吃饭睡觉玩游戏等行为。C+ +提供了类的概念,可以将某一类事物的所有属性和行为封装在一个class中。

创新互联公司于2013年开始,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元梓潼做网站,已为上家服务,为梓潼各地企业和个人服务,联系电话:18980820575

2、类对于某个事物的描述其实还是抽象的,例如有一-类事物有姓名、性别、年龄等属性,可以吃饭睡觉玩游戏等行为,如果只是这么描述的话其实我们是不知道这个事物具体是什么样的,因为这个类没有告诉我们每个属性具体的值是多少(这个事物的姓名是什么,年龄是多少),所以类只是对某一类事物的一个描述而已。实际应用中我们需要操作某类事物中一个或者多个具体的事物。那么这个具体的事物我们就称之为对象。

3、类是抽象的,对象是具象的。

4、对象是怎么来的呢?由类实例化而来。因此我们也说通过一个类实例化-个对象。

一、类的基本使用 1.类的定义和实例化

1)类的定义

属性:变量

行为:函数/方法

类的定义:class+类名{

访问控制符:

成员变量//属性

成员函数//行为

};

访问控制符有三种:public,private,protected.

实列:创建一个动物类

class CAnimal{//,在工程中我们习惯将类名首字母大写
	public://访问控制符
		char name[32];//定义一个名字属性
		int age;//定义一个年龄属性
	public:
		void func(char *voice){//成员函数,也称方法
			cout<

这里先使用访问控制符public,后面再详细介绍访问控制符。

2)类的实列化

实列化一个普通对象

类名 +对象名

CAnimal a;//就简单实列化一个对象了

当进行实列化了后,a就拥有CAnimal的公有属性了。

那么接下来我们就对这个对象的属性进行赋值。

CAnimal a;//实列化一个对象
	a.age=10;//对年龄进行赋值
	cout<
10
xiaohua:gu lu gu lu
xiaohua

这样我们就给a这个对象的属性赋值,查看属性和调用方法。

那么我们下面来学习定义一个指针变量

类名 *对象名

CAnimal *p;//定义一个指针

注意:定义一个指针变量,但是本质还是指针,不是实列化的对象。

那么接下来就让我们来看看指针变量的用法吧

CAnimal a;
	a.age=10;
	coutage<func("hulalala");//通过指针来调用方法
10
xiaohua:gu lu gu lu
xiaohua
100
xiaohua:hulalala
2.访问控制符

C++中给予成员函数和成员变量访问权限。

public:公有的,修饰成员函数和成员变量只能在类里类外均可以访问。

protected:保护的,修饰成员函数和成员变量只能在类里可以访问。

private: 私有的,修饰成员函数和成员变量只能在类里可以访问。

就这么说着大家都应该不是很明白吧。什么叫类内,什么叫类外?

class Teacher{
	public://
		char name[32];
	private://在私有属性下定义的
		int _age;//[Error] 'int Teacher::_age' is private
		char _sex;
};
 int main()
{
	Teacher t;
	int age;
	char m;
	memset(t.name,0,sizeof(t.name));
	strcpy(t.name,"wanglaoshi");
	t._age=34;
	t._sex='m';
	return 0;
}

大家看报错原因,_age在private中,在Teacher这个类外是不能进行访问的。

[Error] 'int Teacher::_age' is private

虽然是private,但是如果我们要对其进行访问又该怎么进行操作的呢?这个时候我们就在类内进行修改,private允许在类内进行访问,那么在类内又该怎么进行赋值呢?下面进行代码展示:

class Teacher{
	public://
		char name[32];
		void set_age(int age)  {_age=age;}
		int get_age()  {return _age;}
		void set_sex(char sex)  {_sex=sex;}
		char get_sex()  {return _sex;}
	private:
		int _age;//[Error] 'int Teacher::_age' is private
		char _sex;//一般在private中的属性前加_
};

如上面代码显示,在类的public中创建两个函数为在其他函数的访问提供接口,一个set函数给私有属性赋值,一个get函数将私有属性的值拿出来。

那么有没有小伙伴会这么想,反正都能访问private里面的值,那么这个private有什么用呢?乍一看好像没啥用,但是小伙伴们想想啊,万一我们在给private里的属性赋值的时候会不会赋错,或者赋一些奇葩的数字上去

t._age=10000;
	t>_sex='p';

如上代码,但是在我们的现实生活中没有这样的人存在,明显不满足客观规律。这时候private配合着set函数就可以轻松的解决了,上面那个代码大家看看该怎么改才能达到目的

void set_age(int age){
			if(age<0||age>200){
				cout<<"error age"<

我们在set函数里面加给条件判断,这样我们就可以对数据进行合理性检验,保证代码的健壮性。

虽然我们进行了赋值,但是为了代码的健壮性我们可以对代码进行优化改进

bool set_age(int age){
			if(age<0||age>200){
				cout<<"error age"<

利用bool类型这样我们就可以在调用函数时发现问题了。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:C++类与对象-创新互联
当前地址:http://cdkjz.cn/article/hceej.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220