哇咔咔 简单:
#include
using namespace std; //std命名空间
class test{ //开始定义类
public:
test(){n+=2;} //构造函数 对象创建的时候调用的函数
~test(){n-=3;} //析构函数 对象消亡的时候调用的函数
static int getnum(){return n;} //该函数返回成员变量n的值
private:
static int n; //成员变量 n
};
int test::n=1; //因为成员变量n是static类型的,该类型的变量属于类不属于对象,初始化只能全局初始化,这里实现的就是初始化n
int main()//程序从这个函数进入 从这个函数退出
{
test*p=new test; //生成了一个test对象p 这里会调用上述的构造函数,因此现在n的值是2+1=3了
delete p; //删除对象p 这里回调用上述的析构函数,因此现在的n值是3-3=0
cout<<"n="<
return 0;
}
不懂再问
上面3~10行,定义了个类,其中有个静态属性n,并有个静态方法可以取得类的这个属性值。
从5行的构造函数和6行的析构函数看,是每创建一个对象,n值加2,每析构一个减3.
main上面一行是给test的这个静态属性赋值为1.
运行结果,n初始化为1,构造时(new)加2成3,析构时(delete)减3得0.
#include
using namespace std;
class test{
public:
test(){n+=2;}//构造函数
~test(){n-=3;}
static int getnum(){return n;}
private:
static int n;
};
int test::n=1;
int main()
{
test*p=new test;//创建一个指针对象,运行构造函数n+=2,即n=1+2=3.
delete p;//删除指针对象,运行析构函数n-=3,即:n=3-3=0
cout<<"n="<
}
#include
using namespace std;
class test
{
public:
test(){n+=2;}
~test(){n-=3;}
static int getnum(){return n;}
private:
static int n; // 静态成员变量
};
int test::n=1; // 初始化静态变量为1
int main()
{
test*p=new test; // test类指针new一个test类对象,调用构造函数,n+=2,得到n=3
delete p; // delete了刚new的对象,调用析构函数,n-=3,得到n=0
cout<<"n="<
}
int main()
{
test*p=new test;
delete p;// 这里把指针释放了,所以test::n被清除,默认为0。
cout<<"n="<
return 0;
}