⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 account.h

📁 C++ PRIME书中的原代码,看本书时可以学习的例子.
💻 H
字号:
#ifndef ACCOUNT_H
#define ACCOUNT_H

// #include <new>
// #include <cstddef>
#include <new.h>
#include <stddef.h>

#include <utility>
#include <vector>
#include <string>

typedef pair<string,double> value_pair;
 
class Account {
public:
	Account() :  _balance( 0.0 ), _acct_nmbr( 0 ) {}

	Account( const char*, double=0.0 );
	Account( const string&, double=0.0 );
	Account( const Account &rhs );
	Account& operator=( const Account &rhs );

	string       name()    const { return _name; }
	double       balance() const { return _balance; }
        unsigned int account() const { return _acct_nmbr; }

 	static Account* init_heap_array(
     		vector<value_pair> &init_values,
     		vector<value_pair>::size_type elem_count = 0 );

 	static void dealloc_heap_array( Account*, size_t );

private:
	string       _name;
 	unsigned int _acct_nmbr;
 	double       _balance;

	unsigned int get_unique_acct_nmbr() const;
};

inline Account::
Account( const char* name, double opening_bal )
       : _name( name ), _balance( opening_bal )
{
        _acct_nmbr = get_unique_acct_nmbr();
}

inline Account::
Account( const string &name, double opening_bal )
       : _name( name ), _balance( opening_bal )
{
        _acct_nmbr = get_unique_acct_nmbr();
}

inline Account::
Account( const Account &rhs )
       : _name( rhs._name )
{
        _balance = rhs._balance;
        _acct_nmbr = get_unique_acct_nmbr();
}

inline Account& Account::
operator=( const Account &rhs )
{
        // guard against self-assignment
        if ( this != &rhs )
        {
                // invokes string::operator=(const string& )
                _name = rhs._name;
                _balance = rhs._balance;
        }

        return *this;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -