属性(数据成员)
本课属于 Coddy C++ 学习旅程的“面向对象编程”单元。第 9 课,共 104 课。
数据成员(属性)用于存储对象的状态。它们通常声明为 private,并通过公共 getter/setter 方法访问。这称为封装。
私有数据成员
class BankAccount {
private:
std::string accountName;
int balance;
};公有获取器和设置器
class BankAccount {
private:
std::string accountName;
int balance;
public:
void setBalance(int balance) {
this->balance = balance;
}
int getBalance() {
return this->balance;
}
};带验证的设置方法
void BankAccount::setBalance(int balance) {
if (balance >= 0) {
this->balance = balance;
}
}访问说明符
class MyClass {
private: // 只能在类内部访问
int secret;
public: // 可以从任何地方访问
int getSecret() { return secret; }
protected: // 可以在类和子类中访问
int shared;
};将数据成员设为 private,可以让外部代码无法访问它们。获取器会返回它们的值,设置器可以修改它们,并可选择进行验证。这样可以保护数据,并控制数据的访问方式。
挑战
中等创建一个包含私有数据成员和公共访问方法的 BankAccount 类:
- 私有成员:
accountName(字符串)、balance(int) - 设置方法:
setAccountName、setBalance - 获取方法:
getAccountName、getBalance deposit(int amount):如果 amount > 0,则增加余额withdraw(int amount):如果可以取款,则返回 "Success",否则返回 "Insufficient funds"
亲手试试
#include <iostream>
#include "BankAccount.h"
int main() {
std::string name;
int initial, depositAmt;
std::getline(std::cin, name);
std::cin >> initial >> depositAmt;
BankAccount account;
account.setAccountName(name);
account.setBalance(initial);
std::cout << "Account: " << account.getAccountName() << std::endl;
std::cout << "Balance: " << account.getBalance() << std::endl;
account.deposit(depositAmt);
std::cout << "After deposit: " << account.getBalance() << std::endl;
std::string result = account.withdraw(2000);
std::cout << "Withdraw 2000: " << result << std::endl;
std::cout << "Final Balance: " << account.getBalance() << std::endl;
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: C++ 在线编译器