经过 C++ Primer Plus 上的实验发现:对象操作是一个栈的机制。
先被创建的对象,后被释放,而对一个已经具体化的对象进行的任何改变,都会导致旧对象的消亡。
执行的顺序是先构造,再复制,最后析构。令我印象深刻的一例子:
stock10.h
#ifndef STOCK10_H_
#define STOCK10_H_
#include <string>
class Stock
{
private:
std::string company;
long shares;
double share_val;
double total_val;
void set_tot() { total_val = shares * share_val; }
public:
Stock();
Stock(const std::string & co, long n = 0, double pr = 0.0);
~Stock();
void buy(long num, double price);
void sell(long num, double price);
void update(double price);
void show();
};
#endif
stock10.cpp
#include <iostream>
#include "stock10.h"
Stock::Stock()
{
std::cout << "default constructor called\n";
company = "no name";
shares = 0;
share_val = 0.0;
total_val = 0.0;
}
Stock::Stock(co