c++成员属性

这里写目录标题

成员属性

  1. public
  • 使用 public 关键字声明的成员在类的内部和外部都是可访问的。

  • 对于使用该类的对象或继承该类的派生类,公有成员可以直接访问。

  1. private
  • 使用 private 关键字声明的成员只能在类的内部访问。

  • 对于使用该类的对象或继承该类的派生类,私有成员不可直接访问。

  • 私有成员通常用于封装类的实现细节,隐藏内部数据和实现。

  1. protected
  • 使用 protected 关键字声明的成员在类的内部访问和继承的派生类中访问是可行的。

  • 对于使用该类的对象,受保护成员不可直接访问。

三种继承方式

在这里插入图片描述

C++中,将类的成员属性设置为私有是实现封装性的一种重要方式,它能够提升数据的安全性和代码的可维护性。具体来说,可以通过以下方式实现成员属性的私有化设置: ### 成员属性私有化的设置方法 使用`private`关键字可以将类中的成员属性定义为私有属性。私有属性只能被该类的成员函数访问,外部代码无法直接访问或修改这些属性。为了允许外部代码在受控条件下访问这些私有属性,通常会提供公共的成员函数(即访问器和修改器)来实现对私有属性的读取和写入操作[^5]。 例如,定义一个类`Person`,其中包含私有成员属性`m_name`、`m_age`和`m_lover`,并通过公共的成员函数提供对这些属性的受控访问: ```cpp #include <iostream> #include <string> using namespace std; class Person { public: // 设置姓名 void set_name(string name) { m_name = name; } // 获取姓名 string get_name() { return m_name; } // 设置年龄 void set_age(int age) { if (age < 0 || age > 150) { m_age = 0; cout << "年龄设置无效,已设为0" << endl; return; } m_age = age; } // 获取年龄 int get_age() { return m_age; } // 设置情人 void set_lover(string lover) { m_lover = lover; } private: // 姓名 可读可写 string m_name; // 年龄 可读可写,范围必须是0~150之间 int m_age = 0; // 情人 只写 string m_lover; }; int main() { Person p; p.set_name("张三"); p.set_age(1000); cout << "姓名为 " << p.get_name() << endl; cout << "年龄为 " << p.get_age() << endl; p.set_lover("刘"); system("pause"); return 0; } ``` ### 成员属性私有化的优势 1. **控制读写权限**:通过提供特定的成员函数(如`set_name`和`get_name`),可以精确控制对成员属性的读取和写入权限。例如,某些属性可以设置为只读或只写[^3]。 2. **数据有效性检查**:在修改成员属性之前,可以通过成员函数对输入的数据进行有效性检查,从而避免非法数据的写入。例如,在设置年龄时,可以检查年龄是否在合理范围内[^4]。 3. **提高代码的可维护性和灵活性**:将成员属性设为私有后,即使将来需要改变属性的实现方式,也只需修改类的内部实现,而不需要修改使用该类的代码,这有助于提高代码的可维护性和灵活性[^2]。 综上所述,将类的成员属性设置为私有,并通过公共的成员函数提供对外部的受控访问,是C++中实现封装性和信息隐藏的重要手段。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值