C++之struct和class区别

时间:2024-03-29 13:06:09

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

区别

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

class C1
{
	int  m_A; //默认是私有权限
};

struct C2
{
	int m_A;  //默认是公共权限
};

int main() {

	C1 c1;
	c1.m_A = 10; //错误,访问权限是私有

	C2 c2;
	c2.m_A = 10; //正确,访问权限是公共

	system("pause");

	return 0;
}

将成员属性设为私有的好处:

可以自己控制读写权限
对于写权限,我们可以检测数据的有效性

class Person {
public:

	//姓名设置可读可写
	void setName(string name) {
		m_Name = name;
	}
	string getName()
	{
		return m_Name;
	}


	//获取年龄 
	int getAge() {
		return m_Age;
	}
	//设置年龄
	void setAge(int age) {
		if (age < 30 || age > 0) {
			cout << "younger!" << endl;
			return;
		}
		m_Age = age;
	}

	//地址 设置为只写
	void setLover(string place) {
		m_Lover = place;
	}

private:
	string m_Name; //可读可写  姓名
	
	int m_Age; //只读  年龄

	string place; //只写  地址
};


int main() {

	Person p;
	//姓名设置
	p.setName("张三");
	cout << "姓名: " << p.getName() << endl;

	//年龄设置
	p.setAge(30);
	cout << "年龄: " << p.getAge() << endl;

	//地址设置
	p.setLover("place");
	//cout << "地址: " << p.place<< endl;  //只写属性,不可以读取

	system("pause");

	return 0;
}