C++程序解答,看不懂,求大神解释
#include<iostream>usingnamespacestd;classtest{public:test(){n+=2;}~test(){n-=3;}stati...
#include<iostream>
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;
delete p;
cout<<"n="<<test::getnum()<<endl;
return 0;
}
最好能逐行注释,为什么运行结果是n=0啊? 展开
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;
delete p;
cout<<"n="<<test::getnum()<<endl;
return 0;
}
最好能逐行注释,为什么运行结果是n=0啊? 展开
5个回答
展开全部
哇咔咔 简单:
#include<iostream> //头文件就不用说了
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="<<test::getnum()<<endl; //得到n的值是n=0
return 0;
}
不懂再问
#include<iostream> //头文件就不用说了
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="<<test::getnum()<<endl; //得到n的值是n=0
return 0;
}
不懂再问
展开全部
上面3~10行,定义了个类,其中有个静态属性n,并有个静态方法可以取得类的这个属性值。
从5行的构造函数和6行的析构函数看,是每创建一个对象,n值加2,每析构一个减3.
main上面一行是给test的这个静态属性赋值为1.
运行结果,n初始化为1,构造时(new)加2成3,析构时(delete)减3得0.
从5行的构造函数和6行的析构函数看,是每创建一个对象,n值加2,每析构一个减3.
main上面一行是给test的这个静态属性赋值为1.
运行结果,n初始化为1,构造时(new)加2成3,析构时(delete)减3得0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
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="<<test::getnum()<<endl;//对象已经没有了。但是有类,类可以访问自己的静态函数,输出n=0
return 0;
}
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="<<test::getnum()<<endl;//对象已经没有了。但是有类,类可以访问自己的静态函数,输出n=0
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
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="<<test::getnum()<<endl; // 调用test类getnum()函数,打印n=0
return 0;
}
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="<<test::getnum()<<endl; // 调用test类getnum()函数,打印n=0
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int main()
{
test*p=new test;
delete p;// 这里把指针释放了,所以test::n被清除,默认为0。
cout<<"n="<<test::getnum()<<endl;// 所以这里输出为0
return 0;
}
{
test*p=new test;
delete p;// 这里把指针释放了,所以test::n被清除,默认为0。
cout<<"n="<<test::getnum()<<endl;// 所以这里输出为0
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询