1. 程式人生 > 實用技巧 >C++ static 資料成員和建構函式

C++ static 資料成員和建構函式

#include<iostream>
using namespace std;
class Temp
{
    int x;
    static int y;
    //y = 4;
public:
    
    Temp(int m = 0,int n = 90 )
    {
        x = m;
        y = n;               //完全可以這樣寫,但是你想一想,static定義的目的是什麼?為的就是所有物件都可以使用
//而實際上要是這麼定義的話,會把y的值設定為 90 這會改變定義 static型別 y 的初衷,完全失去了意義
} /* Temp() { x = 6; y = 6; //一個類裡面預設只能有一個預設建構函式 } */ void display() { cout<<x<<" "<<y<<endl; } }; int Temp::y = 30; int main() { Temp t; t.display(); //沒有return 值 return 0; }

#include<iostream>
using
namespace std; class Time { int h; //C++預設定義資料成員是私有的 int m; int s; public: Time(int j=0,int k=0,int l=0):h(j),m(k),s(l) //預設值一定要放在右邊 !!!! { //這個不是預設建構函式
//所以說這個類中沒有預設建構函式,但是一個類中必須有一個預設建構函式 } }
class Temp //C++預設繼承方式是私有的 如果需要其他繼承型別 則 class 子類: public 父類 { //這根本就不是繼承,就是內嵌呼叫 Time temp; //對於建立內嵌物件,如果沒有顯示呼叫建構函式,會預設呼叫time的建構函式 const int x; //C++ const 允許指定一個語義約束,編譯器會強制實施這個約束,允許程式設計師告訴編譯器某值是保持不變的 C++ const 和 static 有什麼區別? int y; public: Temp(int m = 0,int n = 0) :x(m) //!!!!!這才是正確的賦值方法 { //x = m; // 因為X是const型別,所以不能賦值 y = n; } void display() { cout<<x<<" "<<y<<endl; } }; int main() { Temp t; t.display(); return 0; }