#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; 
}