首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include <iostream> using namespace std; class Obj { static int i; public: Obj( ){i++;}
有如下程序: #include <iostream> using namespace std; class Obj { static int i; public: Obj( ){i++;}
admin
2017-10-17
47
问题
有如下程序: #include <iostream> using namespace std; class Obj { static int i; public: Obj( ){i++;} ~Obj(){i--;} static int getVal( ){ return i;} }; int Obj::i=0; void f() {Obj ob2; cout<<ob2.getVal( ); } int main( ){ Obj ob1; f(); Obj *ob3=ew Obj; cout<<ob3->getVal( ); delete ob3; cout<<Obj::getVal( ); return 0; } 程序的输出结果是
选项
A、232
B、231
C、222
D、221
答案
D
解析
本题主要考查的是静态成员。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。本例中,Obj类定义了一个静态数据成员i,并初始化为0。在主函数中,首先定义了1个该类对象ob1,所以构造函数被执行1次,i被加1。然后调用函数f(),该函数中又定义了一个对象ob2,此时i再次加1变成2,然后通过静态成员函数getVal()输出i的值2。f()函数结束了,局部变量ob2被释放,故析构函数被调用了1次,i变成1。回到主函数中,又动态创建了1个对象并让指针ob3指向它,所以i变成2,接着输出的值为2。最后,释放动态创建的那个对象,i变为1,所以最后输出的值为1。因此,程序最终输出结果为221,应该选择D。
转载请注明原文地址:https://kaotiyun.com/show/XPAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列叙述中正确的是
下列叙述中错误的是
下面对静态数据成员的描述中,正确的是()
下面程序输出的结果是()#include<iostreas.h>voidmain(){inti:inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++=c
有如下类的定义。那么空格处的语句是()。classMyClass{____________intx,y;public:MyClass(intx1=0,inty1=0){
对下列语句正确的描述是()。constint*x;∥(1)int*constx;∥(2)
下列语句中,输出与众不同的是
当需要将一个函数boo1isnumber(charc)声明为内联函数时,则此内联函数的函数原型为()。
下列关于函数模板实参不能省略的情况说明不正确的是
下列选项中合法的用户标识符是()。
随机试题
我国农村信用社的入股方式是()
肝性脑病躁动不安时不宜用
A.氯霉素B.环丙沙星C.磺胺嘧啶D.红霉素E.呋喃妥因
根据《刑法》有关规定,下列哪些说法是正确的?
二次型f(x1,x2,x3)=(λ-1)x12+λx22+(λ+1)x32,当满足()时,是正定二次型。
建设工程质量保证金是用以保证承包人在缺陷责任期内对建设工程出现的缺陷进行维修的资金。其中的缺陷是指工程质量不符合()。
收回应收账款35000元,款项已送存银行,这一经济业务对会计要素的影响是()。
对外开放政策的主要内容是什么?
联合行文的成文日期是()。
AstheworldexcitedlygreetedSnuppy,thefirstcloned(克隆)dog,commentatorscelebratedourcleverness.Manyfeelproudthatour
最新回复
(
0
)