class Account
{
  public:
    Account(double InitialBalance)
    { balance = InitialBalance; }
    double GetBalance()
    { return balance; }
  private:
    double balance;
};
double Account = 15.37;
void main()
{
  class Account checkingA(account);//声明一个返回值为类Account类型的函数。对吗?
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  class Account * checkingB = new class Account(Account);//什么意思?
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ......
}

解决方案 »

  1.   

    我已经知道class Account checkingA(account);不是声明一个返回值为类Account类型的函数,我不理解的是,为什么后面要加一个'()'!!!!!他和class Account checkingA;有什么区别?
      

  2.   

    1)class Account checkingA(account);
    这句是在栈(stack)中构造一个class Account的实例,就像下面语句:
    char c;
    括号中的account(应该是Account,即double型变量Account)是因为class
    Account的构造函数需要一个double变量做参数。2)class Account * checkingB = new class Account(Account);
    这句是在堆(heap)中构造一个class Account的实例,就像下面语句:
    char* c = new char;
    括号中的Account(即double型变量Account)是因为class
    Account的构造函数需要一个double变量做参数。3)总之一句话,构造函数的需要
      

  3.   

    一个是在stack中,一个是在heap中构建一个示例。用new出来的实例需要delete释放掉。