私は C# を少し学び、今は C++ を学んでいます。C# では、get 演算子と set 演算子を使用してデータの隠蔽を行うことができます。この方法では、データ メンバーを "get" を提供することで "読み取り専用" として表示できますが、"set" を提供することはできません。
これにより、クラス (Person) に別のクラス (Account) を含めることができるようになり、Person.Account のユーザーが Account クラスのパブリック関数を使用できるようになりますが、ユーザーは Account クラスを直接変更することはできません。それだけ。
これは、以下のコード サンプルでより明確になります。
私の質問は、C++ は気の利いた get/set 構文を提供しないため、以下のコードに類似した C++ はありますか?
using System;
class Person
{
private string _Name;
public string Name { get { return _Name; } set { _Name = value; } }
private Account _Account;
public Account Account { get { return _Account; } }
public Person()
{
_Name = "";
_Account = new Account();
}
}
class Account
{
private decimal _Balance;
public decimal Balance { get { return _Balance; } }
public Account()
{
_Balance = 0;
}
public void Deposit(decimal deposit)
{
_Balance += deposit;
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Name = "John Doe";
// not allowed: p.Account = new Account();
// Property or indexer 'CSharp.Person.Account' cannot be assigned to -- it is read only
// allowed: the Account Object's public functions are available
p.Account.Deposit(1000);
Console.WriteLine(p.Account.Balance.ToString());
// console says "1000"
}
}