我是靠谱客的博主 迷你书本,最近开发中收集的这篇文章主要介绍c++基础(三)类和对象封装class与strust的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

类和对象

c++面向对象的三大特征为:封装、继承、多态。同时相应的对象有自己的属性和行为。
那么什么是对象呢?下面举几个栗子:

1、小狗可以作为对象,属性有毛色、毛长等,行为有跑、叫、跳等
2、自行车可以作为对象,属性有车胎、颜色等,行为有载人、前进、后退等
同时,具有相同性质的对象称为,其中,小狗属于狗类,自行车属于自行车类。

封装

封装作为c++面向对象三大特性之一,其有如下的意义:
1、将属性和行为作为一个整体,表现为生活中的事物,语法如下:

class 类名{  访问权限: 属性 / 行为 };

示例代码如下:

class Circle
{
//访问权限 

public:
	//属性:半径
	int r;
	//行为:获取面积
	double area()
	{
		return PI * r * r;	
	}
};
Circle c1;
c1.r = 2;
cout << "圆的面积为:" << c1.area() << endl;

2、将属性和行为加以权限控制

//公共权限          public   类内可以访问  类外可以访问
//保护访问权限      protected 类内可以访问  类外不可访问(子类也可以访问父类权限)
//私有权限          private  类内可以访问   类内不可访问(子类也不可访问父类权限)

样例代码如下:

class person
{
public:
	//公共权限
	string name;
private:
	//保护权限
	string number;
private:
	//私有权限
	int password;	
public:
	void func()
	{
		name = "张三";
		number = 123;
		password = 1234565;	
	}
};
person p1;
p1.name = "李四";
p1.number = 1234; //此时会报错:成员 "person::number" (已声明 所在行数:51) 不可访问 (保护权限内容,类外访问不到)
p1.password = 23445; //此时会报错:成员 "person::password" (已声明 所在行数:55) 不可访问(私有权限内容,类外访问不到)

在我们实际开发中,我们往往会将成员的属性设为私有主要有以下优点:
1、将所有成员属性设置为私有,可以自己控制读写权限;
2、对于写权限,我们可以检测数据的有效性;
样例代码如下:

class Person
{
public:
	//写名字
	void SetName(string name) 
	{
		m_name = name;
	}
	//读名字
	string GetName()
	{
		return m_name;
	}
	//写年龄
	void SetAge(int age)
	{	//判断输入数据有有效性
		if (age < 0 || age > 150)
		{
			m_age = 0;
			cout << "输入错误" << endl;
			return;
		}
		//输入正确,返回输入值
		m_age = age;
	}	
	//读年龄
	int GetAge() 
	{
		m_age = 10;
		return m_age;
	}
	//写体重
	void SetHeight(int height)
	{
		m_height = height;	
	}
private:
	//姓名:设置为可读可写
	string m_name;
	//年龄:设置为可读不可写
	int m_age;
	//身高:设置为可写不可读
	int m_height;
};
Person p1;
p1.SetName("李四");
cout << "名字为:  " << p1.GetName() << endl;
p1.m_age = 10; //此时会报错:成员 "Person::m_age" (已声明 所在行数:36) 不可访问(因为我们在设置属性时,设置为了隐私,所以类外不可以访问)

cout << "年龄为" << p1.GetAge() << endl;
p1.SetHeight(160);
system("pause");

class与strust的区别

class与struct在一定程度上其功能基本是相同的,唯一的区别是默认访问权限的不同:
1、struct的默认权限为公共
2、class默认权限私有
代码样例如下:

class a
{
	int c = 10;	
};


struct b
{
	int s = 10;
};

a a1;
a1.c = 10;//此时会报错成员 "a::c" (已声明 所在行数:8) 不可访问。(因为class默认访问权限为私有)
b b1;
b1.s = 10; //因为struct的默认访问权限为公共,所以在类外调用是没问题的

最后

以上就是迷你书本为你收集整理的c++基础(三)类和对象封装class与strust的区别的全部内容,希望文章能够帮你解决c++基础(三)类和对象封装class与strust的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部