程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++結構體

C++結構體

編輯:C++入門知識

C++結構體


1.C++結構體有默認的構造函數

 

#include
using namespace std;

struct node
{
    int m,n;
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

運行結果:

 

\

因為默認的構造函數沒有形參且函數體裡是空的,所以結構體沒有被初始化,輸出的值是系統給的,如果把結構體變量定義為全局變量,那麼會輸出0 0,這是因為全局變量和局部變量在沒有初始化時,取初值方式不同,造成運行結果不同

 

#include
using namespace std;

struct node
{
    int m,n;
};

node a;

int main()
{
    printf("%d %d\n",a.m,a.n);
    return 0;
}

 

運行結果:


\

2.把默認的構造函數寫出來後,系統就不會再生成默認函數

 

#include
using namespace std;

struct node
{
    int m,n;
    node(){}//默認的構造函數
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}
運行結果:
\

 

3.

 

#include
using namespace std;

struct node
{
    int m,n;
    //node(){}//默認的構造函數
    node(int a,int b)
    {
        n=a;
        m=b;
    }
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

這時候程序出錯,因為a找不到合適的構造函數,因為你寫了構造函數後默認的構造函數系統就不生成了,這時候得重載構造函數如下:

 

 

#include
using namespace std;

struct node
{
    int m,n;
    node(){}//默認的構造函數
    node(int a,int b)
    {
        n=a;
        m=b;
    }
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

4.

 

 

#include
using namespace std;

struct node
{
    int m,n;
    node(){}//默認的構造函數
    node(int a,int b)
    {
        n=a;
        m=b;
    }
    //使用初始化列表的構造函數
    //node(int a,int b):m(a),n(b){}
};

int main()
{
    node a;
    node b(2,3);
    printf("%d %d\n",a.m,a.n);
    printf("%d %d\n",b.m,b.n);
    return 0;
}

運行結果:

 

 

\

5.使用初始化列表的構造函數

 

#include
using namespace std;

struct node
{
    int m,n;
    node(){}//默認的構造函數
    /*node(int a,int b)
    {
        n=a;
        m=b;
    }*/
    //使用初始化列表的構造函數
    node(int a,int b):m(a),n(b){}
};

int main()
{
    node a;
    node b(2,3);
    printf("%d %d\n",a.m,a.n);
    printf("%d %d\n",b.m,b.n);
    return 0;
}

運行結果:

 

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved