C++;方法访问受限的指针 在C++中,我希望有一个实例方法返回一个对象引用,但是调用方只允许调用以访问所涉及的对象的方法。换句话说,不应允许调用方调整指针引用的对象的状态。 在考虑性能和副本处于某个时间点的事实时,返回对象的副本并不理想
请看我的例子:C++;方法访问受限的指针 在C++中,我希望有一个实例方法返回一个对象引用,但是调用方只允许调用以访问所涉及的对象的方法。换句话说,不应允许调用方调整指针引用的对象的状态。 在考虑性能和副本处于某个时间点的事实时,返回对象的副本并不理想,c++,pointers,C++,Pointers,请看我的例子: class _balance { public: _balance(int pBalance) // Constructor {setBalance(pBalance);} int getBalance() {return bal;} void setBalance(int pBalance)
class _balance {
public:
_balance(int pBalance) // Constructor
{setBalance(pBalance);}
int getBalance()
{return bal;}
void setBalance(int pBalance)
{bal = pBalance;}
private:
int bal;
};
class _account {
public:
_account() // Constructor
{balance = new _balance(100);}
_balance *getAccountBalance()
{return balance;}
private:
_balance *balance;
};
int main() {
// Create an account (with initial balance 100)
_account *myAccount = new _account();
// Get a pointer to the account balance and print the balance
_balance *accountBalance = myAccount->getAccountBalance();
printf("Balance is:%d", accountBalance->getBalance() ); // This should be supported
// Changing the balance should be disallowed. How can this be achieved?
accountBalance->setBalance(200);
printf("Adjusted balance is:%d", accountBalance->getBalance() );
}
结果输出:
<>在C++中有实现这个的方法吗?
谢谢你
“不应允许调用方调整指针引用的对象的状态
嗯,你知道,这就是const
的全部内容
你需要一本好的教科书。查看。Re
“不应允许调用方调整指针引用的对象的状态
嗯,你知道,这就是const
的全部内容
你需要一本好的教科书。查看。使用关键字
const
const _balance* accountBalance = myAccount->getAccountBalance();
这使得成员是常量,因此无法修改。这也意味着您只能调用标记为const
的balance
成员函数。由于getBalance()
不修改该值,因此可以将其标记为const
int getBalance() const // <----
{return bal;}
int getBalance()const/使用关键字const
const _balance* accountBalance = myAccount->getAccountBalance();
这使得成员是常量,因此无法修改。这也意味着您只能调用标记为const
的balance
成员函数。由于getBalance()
不修改该值,因此可以将其标记为const
int getBalance() const // <----
{return bal;}
int getBalance()const/返回一个“const\u balance*”。默认情况下,不允许使用所有非常量方法。返回“常量余额*”。默认情况下,不允许使用所有非常量方法。谢谢,这完美地回答了问题。谢谢,这完美地回答了问题。全局命名空间中以下划线开头的名称保留用于实现。您的代码格式不正确。全局命名空间中以下划线开头的名称保留用于实现。你的代码格式不正确。