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; }
原文地址:https://www.cnblogs.com/zhangqianxi/p/14088970.html