C++物件導向編程入門:建構函式與解構函式

來源:互聯網
上載者:User

請注意,這一節內容是c++的重點,要特別注意!

我們先說一下什麼是建構函式。

上一個教程我們簡單說了關於類的一些基本內容,對於類對象成員的初始化我們始終是建立成員函數然後手工調用該函數對成員進行賦值的,那麼在c++中對於類來說有沒有更方便的方式能夠在對象建立的時候就自動初始化成員變數呢,這一點對操作保護成員是至關重要的,答案是肯定的。關於c++類成員的初始化,有專門的建構函式來進行自動操作而無需要手工調用,在正式講解之前先看看c++對建構函式的一個基本定義。

1.C++規定,每個類必須有預設的建構函式,沒有建構函式就不能建立對象。

2.若沒有提供任何建構函式,那麼c++提供自動提供一個預設的建構函式,該預設建構函式是一個沒有參數的建構函式,它僅僅負責建立對象而不做任何賦值操作。

3.只要類中提供了任意一個建構函式,那麼c++就不在自動提供預設建構函式。

4.類對象的定義和變數的定義類似,使用預設建構函式建立對象的時候,如果建立的是靜態或者是全域對象,則對象的位元模式全部為0,否則將會是隨即的。

我們來看下面的代碼:

#include <iostream>
using namespace std;
class Student
{
public:
Student()//無參數建構函式
{
number = 1;
score = 100;
}
void show();

protected:
int number;
int score;

};
void Student::show()
{
cout<<number<<endl<<score<<endl;
}
void main()
{
Student a;
a.show();
cin.get();
}

在類中的定義的和類名相同,並且沒有任何傳回型別的Student()就是建構函式,這是一個無參數的建構函式,他在對象建立的時候自動調用,如果去掉Student()函數體內的代碼那麼它和c++的預設提供的建構函式等價的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.