1. 程式人生 > >構造和析構!

構造和析構!

ons class ret play sin code src log 編譯器

一般而言,所有的對象都需要一個確定的初始狀態!

C++中的類可以定義與類名相同的特殊成員函數,這種類名相同的成員函數叫做構造函數,構造函數在定義時可以有參數,但是沒有任何返回類型的聲明(和返回void是兩個概念)

構造函數的調用:一般情況下C++編譯器自動調用構造函數

技術分享
#include <iostream>

using namespace std;

class Test
{
private:
    int i,j,k;
public:
    Test(int v)
    {
        i = j = k = v;
    }
    void print()
    {
        printf(
"i = %d,j = %d,k = %d\n",i,j,k); } }; int main() { Test t1(4);//自動調用構造函數 Test t2 = 5;//自動調用構造函數 Test t3 = Test(6);//主動調用構造函數 t1.print(); t2.print(); t3.print(); Test tA[3] = {Test(1),Test(2),Test(3)};//主動調用構造函數 for(int i=0;i<3;i++) { tA[i].print(); }
return 0; }
View Code

兩個特殊的構造函數:拷貝構造函數和默認構造函數

無參構造函數:當類中沒有定義任何一個構造函數,C++編譯器會為我們提供無參構造函數和拷貝構造函數。默認構造函數為空什麽都不做

拷貝構造函數:當類中定義了任意的非拷貝構造函數是,C++編譯器就不會提供無參構造函數了,會為我們提供拷貝構造函數。默認拷貝構造函數會對成員變量一 一復制。

技術分享
#include <iostream>

using namespace std;

class Test
{
private:

public:
    Test(const Test& v)//拷貝構造函數
{ printf("Test(const Test& v)\n"); } Test()//默認構造函數 { printf("Test()\n"); } }; int main() { Test t1; Test t2 = t1; return 0; }
View Code

構造和析構!