有如下程序:#include<iostream>using namespace std;class MyClass{public:MyClass(){++count;}~

题目
有如下程序:includeusing namespace std;class MyClass{public:MyClass(){++count;}~

有如下程序: #include<iostream> using namespace std; class MyClass{ public: MyClass(){++count;} ~MyClass(){--count;} static int getCount(){return count;} private: static int count; }; int MyClass::count=0; int main(){ MyCl

A.121

B.232

C.221

D.122

参考答案和解析
正确答案:A
解析: 本题考查的知识点是静态成员。类中的静态成员是解决同—:个类的不同对象之间的数据和函数共享问题的。静态成员被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的厚则,又保证了安全性。题目中,首先定义了一个obj对象,其构造函数使MyClass的静态数据成员count增1,所以第一条输出语句输出的结果是1。然后通过指针动态创建了一个MyClass类的对象,构造函数再次被调用,count变为2,所以第2次输出结果是2。接下来是用dilete删除了刚才动态创建的MyClass对象。析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序:

#include<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(){++count;)

~MyClass(){--count;)

staticintgetCount(){returncount;}

private:

staticintcount;

};

intMyClass::count=0;

intmain(){

MyClassobj;

cout<<obj.getCount();

MyClass*ptr=newMyClass;

cout<<MyClass::getCount();

deleteptr;

cout<<MyClass::getCount();

return0;

}

程序的输出结果是( )。

A.121

B.232

C.221

D.122


正确答案:A
A。【解析】本题考查的知识点是静态成员。类中的静态成员是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了一个obj对象,其构造函数使MyClass的静态数据成员count增1,所以第一条输出语句输出的结果是1。然后通过指针动态创建了一个MyClass类的对象,构造函数再次被调用,count变为2,所以第二次输出结果是2。接下来是用dilete删除了刚才动态创建的MyClass对象。析构函数被调用,count减1变为1,第三次输出1。故本题的输出为121。

第2题:

如下程序的输出结果是includeusing namespace std;class MyClass{public:MyClass(int

如下程序的输出结果是 #include<iostream> using namespace std; class MyClass{ public: MyClass(int i=0){cout<<1;} MyClass(const MyClass&x)}cout<<2;} }; int main( ){ MyClass objl(1),obj2(2),ohj3(objl); return 0; }

A.112

B.111

C.121

D.113


正确答案:A
解析:MyClass objl(1),ohj2(2),obj3(objl);创建objl和obj2对象时调用第一个构造函数,打印1,创建obj3对象时调用第二个构造函数,打印2。

第3题:

有如下程序include include using namespace std;class MyClass {public:M

有如下程序#include <iostream>#include <iomanip>using namespace std; class MyClass {public:MyClass(){ cout<<'A'; }MyClass(char c){ cout<<c; }~MyClass(){ cout<<'B'; }};int main() {MyClass p1,*p2;p2=new MyClass('X');delete p2;return 0;}执行这个程序屏幕上将显示输出( )。

A.ABX

B.ABXB

C.AXB

D.AXBB


正确答案:D

第4题:

有以下程序:includeusing namespace std;class MyClass{public:MyClass(int n){numbe

有以下程序: #include<iostream> using namespace std; class MyClass { public: MyClass(int n){number=n;} //拷贝构造函数 MyClass(MyClass&other) {number=other.number;} ~MyClass() {} private: int number; }; MyClass fun(MyClass p)

A.5

B.4

C.3

D.2


正确答案:B
解析: 调用拷贝构造函数的情况为:一个新对象被另一个已存在的同类型对象初始化,当一个对象作为实参传遵给函数时为初始化形参,要调用拷贝构造函数。在函数值返回时形参的生命期结束时它的析构函数被调用,在函数返回一个对象时调用拷贝构造函数。符合以上条件的有:用对象obj1来初始化obj3;obj3作为实参被传入,函数fun返回一个对象时,系统用返回值初始化一个匿名对象时调用了拷贝构造函数。总共调用4次。

第5题:

有以下程序:includeusing namespace std;class MyClass{public: MyClass(); ~MyClass

有以下程序: #include<iostream> using namespace std; class MyClass { public: MyClass(); ~MyClass(); void SetValue(int val); private: static int i; }; int MyClass::i=0; MyClass::MyClass() { i++; cout<<i; } MyClass::~MyClass() { i--; cout<<i; } void MyClass::SetValue(int val) { i=val; } int main() { MyClass*my[2]; int k; for(k=0;k<2;k++) my[k]=new MyClass; for(k=0;k<2;k++) delete my[k]; return 0; } 运行后的输出结果是( )。

A.1210

B.1100

C.1234

D.输出结果不确定


正确答案:A
解析:类MyClass中变量i是静态数据成员,它被MyClass类的所有对象共享,但它不属于任何一个对象,它的作用域是类范围。程序i是用来统计类MyClass所创建对象的个数,每创建一个对象i加1,每删除MyClass类对象i减1。

第6题:

有如下程序:includeusing namespace std;elass MyClass{public:MyClass( ){++count;

有如下程序: #include<lostreanl> using namespace std; elass MyClass{ public: MyClass( ){++count;} ~MyClass( ){--count;} static int getCount( ){return count;} private: static int count; }; int MyClass::count=0; int main( ){ MyClass obj; cout<<obj.getCount( ); MyClass*ptr=new MyClass; cout<<MyClass::getCount( ); delete ptr; cout<<MyCiass::getCount( ); return 0; } 程序的输出结果是

A.121

B.232

C.221

D.122


正确答案:A

第7题:

有如下程序: include using namespace std; class MyClass { public:

有如下程序: #include <iostream> using namespace std; class MyClass { public: MyClass() { ++count; } ~MyClass() { --count; } static int getCount() { return count; } private: static int count; }; int MyClass::count=0; int main() { MyClass obj; cout<<obj.getCount(); MyClass *ptr=new MyClass; cout<<MyClass::getCount(); delete ptr; cout<<MyClass::getCount(); return 0; }程序的输出结果是

A.121

B.232

C.221

D.122


正确答案:A
解析:本题考查的知识点是:静态成员。对于类中的非静态数据成员,每一个类对象都拥有一个拷贝(副本),即每个对象的同名数据成员可以分别存储不同的数值,这是保证每个对象拥有区别于其他对象的特征的需要。而类中的静态成员则是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了一个obj对象,其构造函数使MyClass的静态数据成员count增1,所以第一条输出语句输出的结果是1。然后通过指针动态创建了一个MyClass类的对象,构造函数再次被调用,count变为2,所以第2次输出结果是2。接下来是用delete删除了刚才动态创建的MyClass对象,析构函数被调用,count减1变为1,第3次输出1。故本题的输出为121,选项A正确。

第8题:

( 27 )有如下程序:

#include<iostream>

using namespace std;

class MyClass{

public:

MyClass(){++count;}

~MyClass(){--count;}

static int getCount(){return count;}

private:

static int count;

};

int MyClass::count=0;

int main(){

MyClass obj;

cout<<obj.getCount();

MyClass*ptr=new MyClass;

cout<<MyClass::getCount();

delete ptr;

cout<<MyClass::getCount();

return 0;

}

程序的输出结果是

A ) 121

B ) 232

C ) 221

D ) 122


正确答案:A

第9题:

有如下程序 include include using namespace std; cla

有如下程序 #include <iostream> #include <iomanip> using namespace std; class MyClass { public: MyClass() { cout<<'A'; } MyClass(char c){ cout<<c; } ~MyClass(){ cout<<'B'; } }; int main( ) { MyClass p1,*p2; p2=new MyClass('X'); delete p2; return 0; } 执行这个程序屏幕上将显示输出

A.ABX

B.ABXB

C.AXB

D.AXBB


正确答案:D
解析:本题主要考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。本例的main()函数中,第1条语句定义了一个MyClass对象和一个MyClass类型指针,此时创建了1个对象,因为没有构造参数,故会调用默认构造函数,输出一个'A'。第2条语句通过new运算符动态创建了1个MyClass对象,此时传入了一个构造参数'X',所以会调用相应的构造函数,输出一个'X'。第3条语句使用delete运算符释放了1个对象,所以会调用1次析构函数,输出一个'B'。最后,当main()函数结束时,局部变量p1的生存期结束,故还要调用1次析构函数输出一个'B'。因此,最终输出结果是AXBB,应该选择D。