1. 程式人生 > >構造器與析構器

構造器與析構器

構造器 \n 需要 創建 大小 windows.h include () opened

 回顧:之前我們討論了使用面向對象的編程技術開發程序最基本步驟:

  1. 定義一個有屬性和方法的類(模板)
  2. 為該類創建一個變量(實現)

  這是OOP技術的基礎,現在逐步向大家介紹一些更復雜和更有用的概念。
  首先是構浩器,它是類裏的一種特殊的方法。

定義構浩器
  構造器和通常方法的主要區別:
    (1)構浩器的名字必須和它所在的類的名字一樣
    (2)系統在創建某個類的實例時會第一時間自動調用這個類的構造器
    (3)構浩器永遠不會返回任何值
  創建構浩器,需要先把它的聲明添加到類裏:

class Car{
    Car( void );
}

  註意大小寫與類名保持一致。在結束聲明之後開始定義構造器本身:

Car:Car(void//不用寫void Car::Car(void)
{
    color="WHITE";
    engine="V8";
    wheel=4;
    gas_tank=FULL_GAS;
}

  好,到這裏我們就可以自己著手對之前打造的那輛跑車代碼進行“改裝"了吧?car.cpp

技術分享圖片
#include <iostream>
#include <windows.h>

#define FULL_GAS 85

class Car
{
public:    
    std::string  color;
    std::string
engine; unsigned int gas_tank; unsigned int wheel; Car(void); void setColor(std::string col); void setEngine(std::string eng); void setWheel(unsigned int whe); void fillTank(int liter); int running(void); void warning(void); }; Car::Car(void) { color
= "While"; engine = "V8"; wheel = 4; gas_tank = FULL_GAS; } void Car::setColor(std::string col) { color = col; } void Car::setEngine(std::string eng) { engine = eng; } void Car::setWheel(unsigned int whe) { wheel = whe; } void Car::fillTank(int liter) { gas_tank += liter; } int Car::running(void) { char i; std::cout << "我正在以120的時速往前移動。。。越過那高山越過那河。。。\n"; gas_tank--; std::cout << "當前還剩 " << 100*gas_tank/FULL_GAS << "%" << "油量!\n"; if( gas_tank < 10 ) { std::cout << "請問是否需要加滿油再行駛?(Y/N)\n"; std::cin >> i; if( Y == i || y == i ) { fillTank(FULL_GAS); } if( 0 == gas_tank ) { std::cout << "拋錨中。。。。。。"; return 1; } } return 0; } void Car::warning(void) { std::cout << "WARNING!!" << "還剩 " << 100*gas_tank/FULL_GAS << "%" << "油量!"; } int main() { Car mycar; while( !mycar.running() ) { ; } return 0; }
View Code

  構造對象數組:之前我們已經說過,數組可以是任何一種數據類型,當然也包括對象。
  如:Car mycar[10];

  調用語法依舊是:mycar[x].running; 註:x代表著給定數組元素的下標。

  好了,自己造十幾輛法拉利“自慰下”。



構造器與析構器