概述
类和对象
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的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复