1. 程式人生 > >c++ 類的定義和使用

c++ 類的定義和使用

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class A
{
private:
    int n2;
    int n1;

public:

    A() :n2(34), n1(n2+1) {}

    void Print() {
        cout << "n1:" << n1 << ", n2: " << n2 << endl;
    }
};

int main()
{
    A a;
    a.Print();
    getchar();
    return
1; }

這裡寫圖片描述

對上面程式碼稍微做調整: 將n1和n2兩個變數定義的順序互換一下

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class A
{
private:
    int n1;
    int n2;

public:

    A() :n2(34), n1(n2+1) {}

    void Print() {
        cout << "n1:" << n1 << ", n2: "
<< n2 << endl; } }; int main() { A a; a.Print(); getchar(); return 1; }

列印結果:

這裡寫圖片描述

由此可以總結: 建構函式中,變數初始化的順序,是以變數定義的順序來定的,而不是簡單的以建構函式中變量出現的順序來定的

還可以使用有參的建構函式:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class
A { private: int n1; int n2; public: A(int k1,int k2) :n2(k1), n1(k2) {} void Print() { cout << "n1:" << n1 << ", n2: " << n2 << endl; } }; int main() { A a(78,97); a.Print(); getchar(); return 1; }

列印結果:

這裡寫圖片描述

下面對上面進行改造一下:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class A
{
private:
    int n1;
    int n2;

public:

    A(int k1) :n2(k1), n1(n2) {}

    void Print() {
        cout << "n1:" << n1 << ", n2: " << n2 << endl;
    }
};

int main()
{

    A a(115);
    a.Print();

    getchar();
    return 1;
}

列印結果:
這裡寫圖片描述

通過最後一個例子,再次證明,變數初始化的順序是嚴格按照各個變數定義的先後順序來的,而不是簡單的依據各變數在建構函式中出現的先後順序來定的

下面兩種寫法是一個意思:
寫法一:

public:
    A(int k1,int k2) {
        n1 = k1;
        n2 = k2;
    }

寫法二:

public:

    A(int k1,int k2) :n1(k1),n2(k2){}

FR:海濤高軟(hunk Xu)