3、下面程序的运行结果为()。 #include<iostream> using namespace std; class A { static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} }; int A::n=2; int main() { A a,b(3); a.print(); b.print(); cout<<endl; }A.11B.13C.23D.33

题目

3、下面程序的运行结果为()。 #include<iostream> using namespace std; class A { static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} }; int A::n=2; int main() { A a,b(3); a.print(); b.print(); cout<<endl; }

A.11

B.13

C.23

D.33


相似考题
参考答案和解析
4
更多“3、下面程序的运行结果为()。 #include<iostream> using namespace std; class A { static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} }; int A::n=2; int main() { A a,b(3); a.print(); b.print(); cout<<endl; }”相关问题
  • 第1题:

    下面程序的运行结果为

    #include

    class A

    {

    static int n;

    public:

    A(){n=1;}

    A(int num){n=num;}

    void print(){coot <

    }

    int A::n=2:

    void main()

    {

    A a.b(3);

    a.print();

    b.pint();

    cout <

    }

    A.11

    B.13

    C.23

    D.33


    正确答案:D

  • 第2题:

    下面程序的运行结果是【】。 include using namespace std; class count{ static int n;

    下面程序的运行结果是【 】。

    include <iostream>

    using namespace std;

    class count

    {

    static int n;

    public:

    count()

    {

    n++;

    }

    static int test()

    {

    for(int i=0;i<4;i++)

    n++;

    return n;

    }

    };

    int count::n = O;

    int main()

    {

    cout<<count:: test()<<" ";

    count c1, c2;

    cout<<count:: test()<<endl;

    return 0;

    }


    正确答案:410
    410 解析:本题主要考查C++类中静态数据成员的使用。题目程序首先定义了类count,其内部含有private 类型数据成员static int n;同时含有public 类型构造函数 count()和静态成员函数static int test(),这两个函数的功能分别是为对象申请系统资源并将静态数据成员n加1和将静态数据成员n加4。主函数前,程序将静态数据成员n初始化为0,该数据成员为所有类count 的对象所共有的数据成员;主函数中程序首先执行静态成员函数test() (由于test 声明为 static,因此其调用时无需通过具体对象),其执行过程中,静态数据成员n应该加4变成n:4,因此此处输出为4;此后程序创建对象c1和c2,由于在每次创建过程中都要调用构造函数count(),而每次调用count()函数后,静态数据成员n值都会加1。因此,创建两个对象之后,n值变为n=6:再次执行test()函数后,n的值再次加4,因此变为n=6+4=10。故程序全部执行后,变量n值变为10,而中间程序输出为“410”。

  • 第3题:

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

    有如下程序: #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; } 执行后的输出结果是( )。

    A.n=0

    B.n=1

    C.n=2

    D.n=3


    正确答案:A
    解析:语句Test*p=new Test;会调用类的构造函数Test() {n+=2;},使n的值由原来的1变为3,然后delete p调用类的析构函数~Test() {n-=3;},因为n是static型变量,所以会在3的基础上减 3,使得输出结果为0。

  • 第4题:

    下面程序的运行结果为( )。 class A{ static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} } A::n=0; void main(){ A a,b(2); a.print(); b.pint(); }

    A.12

    B.11

    C.22

    D.21


    正确答案:C
    解析:n是类的静态数据成员,发生静态数据成员的赋值,则所有对象的静态数据成员的值都发生改变。

  • 第5题:

    给出以下程序的执行结果【】。 include using namespace std; int n=1; void Fun(); int

    给出以下程序的执行结果【 】。

    include <iostream>

    using namespace std;

    int n=1;

    void Fun();

    int main ()

    {

    n++;

    Fun ( );

    if (n>0)

    {

    int n=5;

    cout<<"Block: n="<<n<< ", ";

    }

    cout<< "Main: n="<<end1;

    return 0;

    }

    void Fun ( )

    {

    int n=10;

    cout<<"Fun: n="<<n<<",";

    }


    正确答案:Fun:n=10Block:n=5Main:n=2
    Fun:n=10,Block:n=5,Main:n=2 解析:变量的作用域是程序中变量有效的区域,它是变量的一个重要特征。在题中,变量n有3种身份,其一是作为全局变量的n,其二是作为if语句块内局部变量的n,其三是函数内部局部变量的n。程序最后要求输出各个作用域内n的值。

  • 第6题:

    有如下程序:include using namespace std;class Test{public:Test(){n+=2; }~Test(){

    有如下程序: #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; } 执行该程序的输出结果是( )。

    A.n=0

    B.n=1

    C.n=2

    D.n=3


    正确答案:A
    解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有叠加性,执行“n+=2”和“n-=3”后n的值为0。

  • 第7题:

    下面程序的运行结果为include < iostream.h >class A{ static int n;public:A( ){n=1;}A(int nu

    下面程序的运行结果为 #include < iostream.h > class A { static int n; public: A( ){n=1;} A(int num){ n = num;} void print( ){cout<< n;} }; int A::n=2; void main( ) { A a,b (3); a.print( ); b.print( ); cout<< end1; }

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个)。

  • 第8题:

    若有以下程序: include usingnamespace std; class Sample { private: const int n;

    若有以下程序:

    include <iostream>

    using namespace std;

    class Sample

    {

    private:

    const int n;

    public:

    Sample(int i) :n(i) {)

    void print()

    {

    cout<<"n="<<n<<end1;

    }

    };

    int main()

    {

    sample a(10);

    a.print();

    return 0;

    }

    上述程序运行后的输出结果是【 】。


    正确答案:n=10
    n=10 解析:本题考核常成员数据的应用。类Sample中,定义了一个常数据成员n,所以构造函数只能通过初始化列表来初始化它。

  • 第9题:

    有如下程序:includeusing namespace std;int s=0;class sample{ static int n;public

    有如下程序: #include<iostream> using namespace std; int s=0; class sample { static int n; public: sample(int i) { n=i; } static void add() { s+=n; } }; int sample::s=0; int main() { sample a(2),b(5); sample::add(); cout<<s<<endl; return 0; } 程序运行后的输出结果是

    A.2

    B.5

    C.7

    D.3


    正确答案:B
    解析:本题考核静态数据成员和静态成员函数的应用。程序中定义一个类sample,它包括一个静态数据成员n和一个静态成员函数add,并在类的构造函数中给类私有静态数据成员n赋值。在主函数main中,定义对象a(2)时,通过构造函数使静态数据成员n的值变为2,在定义对象b(5)时,通过构造函数使静态数据成员n=5(覆盖了前面的n=2),再执行sample::add()使全局变量s=5。

  • 第10题:

    下面程序的运行结果是()。includeusing namespace std;class TestClass{static int n;

    下面程序的运行结果是( )。 #include<iostream> using namespace std; class TestClass { static int n; public: TestClass () { n++; } static int test() { for(int i=0;i<4;i++) n++; return n; } }; int TestClass::n=0; int main() { cout<<TestClass::test()<<" "; TestClass c1,c2; cout<<TestClass::test()<<endl; return (); }

    A.4,10

    B.4,6

    C.0,6

    D.0,4


    正确答案:A
    解析:在主函数中首先调用TestClass中的test函数输出,类中的n为静态数据成员,可以为所有的对象共享这些数据,这里调用后n等于4。定义对象c1,c2调用构造函数后n=6,所以主函数再次执行“coutTestClass::test()endl;”后,n等于10。

  • 第11题:

    若有如下程序:includeusing namespace std;int s=0;class sample{static int n;publi

    若有如下程序: #include<iostream> using namespace std; int s=0; class sample { static int n; public: sample(int i) { n=i; } static void add() { S+=n; } }; int sample::n=0; int main() { sample a(2),b(5); sample::add(); cout<<s<<endl; return 0; } 程序运行后的输出结果是( )。

    A.2

    B.5

    C.7

    D.3


    正确答案:B

  • 第12题:

    下列程序段的执行结果为()。includeusing namespace std;class example{int n;public:

    下列程序段的执行结果为( )。 #include<iostream> using namespace std; class example{ int n; public: example(int i){n=i;} void add(){s+=n;} static int s; void pr(){ cout<<s<<endl; } }; int example::s=0; int fuc(char *x); int main(){ example x(2),y(3),z(4); x. add(); y. add(); z.pr(); return 0; }

    A.2

    B.3

    C.5

    D.6


    正确答案:C
    解析:s为静态数据成员,其初始值为0。a,b,c为定义的3个对象,其各自的私有成员n为2,3,4。执行x.add();语句后,s=2;再执行y.add();后,s=5;最后执行输出语句z.pr(),即输出s的值5。

  • 第13题:

    下面程序的运行结果为 include Class Astatic int n; public: A( ) {n=1;} A(int n

    下面程序的运行结果为

    #include<iostream.h>

    Class A

    static int n;

    public:

    A( ) {n=1;}

    A(int num) {n=num;}

    void print( ) {cout < < n;}

    };

    int A: :n=2;

    void main( )

    {

    A a,b(3) ;

    a. print( ) ;

    b. print( ) ;

    cout < < endl;

    }

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个) 。

  • 第14题:

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

    有如下程序: #include<iostream> using namespace std; class Test { public: Test(){n+=2;} ~Test(){n-=3;} static int getNum(){return n;} private: static int n; }; int Tesl::n=1 int main() { Test*p=new Test; delete p; cout<<"n="<<Tes::tgetNum()<<endl; return 0; } 执行后的输出结果是

    A.n=0

    B.n=1

    C.n=2

    D.n=3


    正确答案:A
    解析:本题考查构造函数和析构函数的调用。类的静态成员和成员函数是类属,不依赖于对象实例存在。

  • 第15题:

    如下程序的输出结果是includeusing namespace std;class Test{public:Test( ){n+=2;}

    如下程序的输出结果是 #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; }

    A.n=0

    B.n=1

    C.n=2

    D. n=3


    正确答案:A
    解析:静态数据成员的初始值n=1,执行Test*p=new Test;,调用构造函数后,n= 3,deletep;调用析构函数,n-=3,所以最终n=0。

  • 第16题:

    假定有如下程序:include using namespace std;int s =0;class example{ static int n

    假定有如下程序: #include <iostream> using namespace std; int s =0; class example{ static int n; public: example(int i){ n=i; } static void add( ){ s+=n; } }; int example::n=0; int main( ){ example a(2),b(5); example::add(); cout<<s<<endl; return 0; }程序运行后输出结果为( )。

    A.2

    B.3

    C.7

    D.5


    正确答案:D
    解析:程序中定义一个类example,它包括一个静态数据成员n和一个静态成员函数add(),并在类的构造函数中给类的私有静态数据成员n赋值。在主函数main()中,定义对象a(2)时,通过构造函数使静态数据成员n的值变为2;在定义对象b(5)时,通过构造函数使静态数据成员n=5,再执行example::add()使全局变量s=5。

  • 第17题:

    有如下程序: include using namespace std; class Base{ int x; pu

    有如下程序: #include<iostream> using namespace std; class Base{ int x; public: Base(int n=0):x(n){cout<<n;) int getX()const{return x;} }; class Derived:public Base{ int y; public: Derived(int m,int n):y(m,)Base(n){cout<<m;} Derived(int m):y(m){cout<<m;} }; int main(){ Derived d1(3),d2(5,7) return 0; }运行时的输出结果是

    A.375

    B.357

    C.375

    D.357


    正确答案:C

  • 第18题:

    有如下程序: include using namespace std; class Sac{ int n; public: Sac():n(4){co

    有如下程序:

    include<iostream>

    using namespace std;

    class Sac{

    int n;

    public:

    Sac():n(4){cout<<n;}

    Sac(int k):n(k){cout<<n;}

    ~Sac(){cont<<n+n;}

    };

    int main(){

    Sac s1,*s2;

    s2=new Sac(3);

    delete s2;

    return 0;

    }

    运行时的输出结果是______。


    正确答案:4368
    4368

  • 第19题:

    以下程序的输出是【】。 include using namespace std; fun(intm) { static int n=1; n=m

    以下程序的输出是【 】。

    include<iostream>

    using namespace std;

    fun(intm)

    {

    static int n=1;

    n=m*n;

    return(n);

    }

    void main()

    {

    int i;

    for(i=1;i<=3;i++) cout<<fun(i);

    }


    正确答案:126
    126 解析:局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束。第一次调用 fun 函数时n的值等于1,第二次调用 fun 函数时n的值等于2,第三次调用 fun 函数时n的值等于6,每次调用 fun 函数时,保留上次调用时n的值不变。

  • 第20题:

    下面程序的运行结果为includeclass A{ int num;public: A(int){num=i;} A(ABm){num

    下面程序的运行结果为 #include<iostream.h> class A { int num; public: A(int){num=i;} A(ABm){num=a.num++;} void print(){cout<<num;} }; void main() { Aa(1),b(a); a.print(); b.print(); }

    A.11

    B.12

    C.21

    D.22


    正确答案:C
    解析:本题;号查考生对拷贝构造函数的掌握。因为++运算是右结合的,所以在使用a对b赋值时,b的num变为l而a的num变为2(先赋值再自加)。

  • 第21题:

    下面程序的运行结果为includeclass A{static int n;public: A(){n=1;} A(intnum){n

    下面程序的运行结果为 #include<iostream.h> class A { static int n; public: A(){n=1;} A(intnum){n=num;} void print(){cout <<n;} }; int A∷n=2; void main() { Aa,b(3); a.print(); b.print(); cout <<end1; }

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个)。

  • 第22题:

    若有如下程序:includeusing namespace std;int s=0;class sample{static int n;pubic

    若有如下程序: #include<iostream> using namespace std; int s=0; class sample { static int n; pubic: sample(int i) { n=i; } static void add() { S+=n; } }; int sample::n=O; int main() { sample a(2),b(5); sample::add(); cout<<s<<endl; return 0; } 程序运行后的输出结果是( )。

    A.2

    B.5

    C.7

    D.3


    正确答案:B

  • 第23题:

    下面程序的运行结果为( )。 #include<iostream.h> class A static int n; public: A{n=1;} A(int num){n=hum;} void print{cout<<n;} }: int A::n=2; void main { A a,b(3); a.print; b.print; cout<<endl:

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员u的值也为3(这两个11实际上是同一个)。

  • 第24题:

    下列程序的输出结果是______。 include using namespace std; class base { public: in

    下列程序的输出结果是______。

    include<iostream>

    using namespace std;

    class base

    {

    public:

    int n;

    base(int x){n=x;}

    virtual void set(int m){n=m;cout<<n<<'';}

    };

    class deriveA:public base

    {

    public:

    deriveA(int x):base(x){}

    void set(int m){n+=m;cout<<n<<'';}

    };

    class deriveB:public base

    {

    public:

    deriveB(int x):base(x){}

    void set(int m){n+=m;cout<<n<<'';}

    };

    int main( )

    {

    deriveA d1(1);

    deriveB.d2(3);

    base*pbase;

    pbase=&d1;

    pbase->set(1);

    pbase=&d2;

    pbase->set(2);

    return 0;

    }


    正确答案:25
    25 解析:本题考核虚函数的定义和调用。在C++中,一个基类指针(或引用)可以用来指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。题中基类成员函数set( )被定义成虚函数,而且其派生类 deriveA和deriveB都有函数set( )的重定义版本,所以通过指针pbase的两次调用分别调用的是派生类deriveA和deriveB中定义的版本,即输出25。