struct和class区别

在C++中struct和class唯一的区别就在于默认访问的权限不同

区别:

  • struct默认权限为公共
  • class默认权限为私有

代码示例:

#include <iostream>
using namespace std;
class C1
{
int m_A; //默认权限 是私有
};
struct C2
{
int m_A; //默认权限 是公共
};
int main()
{
//struct和class区别
//struct默认权限为公共
//class默认权限为私有
C1 c1;
//c1.m_A=100; //在class里默认私有权限 ,因此类外不可以访问
C2 c2;
c2.m_A = 100; //在struct默认的权限为公共,因此可以访问

system("pause");
return 0;
}

成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我可以检测数据的有效性。

代码示例:

#include <iostream>
#include <string>
using namespace std;
//成员属性设置为私有
//将所有成员属性设置为私有,可以自己控制读写权限
//对于写权限,我可以检测数据的有效性。
//设计人类
class Person
{
public:
//设置姓名
void setName(string name)
{
m_Name = name;
}
//获取姓名
string getName()
{
return m_Name;
}
//获取年龄 只读可写 如果想修改(年龄的范围必须是0~150之间)
int getAge()
{
//m_Age = 0; //初始化为0岁
return m_Age;
}
//设置年龄
void setAge(int age)
{
if (age < 0 || age>150)
{
m_Age = 0;
cout << "你这个老妖精!" << endl;
return;
}
m_Age = age;
}
//设置情人 只写
void setLover(string lover)
{
m_Lover = lover;
}
private:
//姓名 可读可写
string m_Name;
//年龄 只读
int m_Age;
//情人 只写
string m_Lover;
};
int main()
{
Person p;
p.setName("张三");
cout << "姓名为:" << p.getName() << endl;
//p.m_Age=18;
//p.setAge(18);
p.setAge(18);
cout << "年龄为:" << p.getAge() << endl;
p.setLover("仓井");
//cout << "情人为:" << p.getLover() << endl; //是不可以访问的
system("pause");
return 0;
}

欢迎关注微信公众号

struct和class区别_属性设置