有如下类定义,请将Sample类的复制构造函数补充完整。class Sample{public:Sample( ){ }~Sample( ){if(P)delete P;)Sample(const Sample&s){______}void SetData(int datA) {P=new int(datA) ;}private:int*P:};

题目

有如下类定义,请将Sample类的复制构造函数补充完整。

class Sample{

public:

Sample( ){ }

~Sample( ){if(P)delete P;)

Sample(const Sample&s){______}

void SetData(int datA) {P=new int(datA) ;}

private:

int*P:

};


相似考题
更多“有如下类定义,请将Sample类的复制构造函数补充完整。class Sample{public:Sample( ){ }~Sample( ){if(P)delete P;)Sample(const Samples){______}void SetData(int datA) {P=new int(datA) ;}private:int*P:};”相关问题
  • 第1题:

    有以下程序: include using namespace std; class sample {int x; public:void setx(

    有以下程序:

    include <iostream>

    using namespace std;

    class sample

    {

    int x;

    public:

    void setx(int i)

    {

    x=i;

    }

    int putx ()

    {

    return x;

    }

    };

    int main ( )

    {

    sample *p;

    sample A[3];

    A[0] .set>:(5);

    A[1] .setx(6);

    A[2] .setx(7);

    for (int j=0;j<3;j++)

    {

    p=&A[j];

    cout<<p->putx () <<", ";

    }

    cout<<end1;

    return 0;

    }

    执行后的输出结果是【 】。


    正确答案:567
    5,6,7 解析:本题考核对象指针与对象数组的应用。主函数中定义对象数组A,然后调用各自的setx()函数赋值,最后通过for循环输出各自内部变量,所以程序最后输出5,6,7。

  • 第2题:

    已知一个类Sample,( )是定义指向类Sample成员函数的指针,假设类有三个公有成员:voidf1(int),void f2(int)和int a。

    A.Sample*p

    B.Int Samale::*pc=&Sample::a

    C.Void(Sample::*Pa)()

    D.Sample*P[10]


    正确答案:C

  • 第3题:

    在下面的类定义中,错误的语句是

    class Sample { public: Sample(int val); //①

    ~Sample(): //②

    private: int a=2.5; //③

    Sample(); //④ };

    A.①②③④

    B.②

    C.③

    D.①②③


    正确答案:C
    解析:本题考核类的定义。C++不能类的定义中给数据成员赋初值。

  • 第4题:

    已知一个类Sample,( )是定义指向类Sample成员函数的指针,假设类有三个公有成员:voidfl(int),void f2(int)和int a。

    A.Sample*p

    B.Int Samale::*pc=&Sample::a

    C.Void (Sample::*Pa) ()

    D.Sample *P[10]


    正确答案:C

  • 第5题:

    有如下类定义,请将Sample类的拷贝构造函数补充完整。

    class Sample{

    public:

    Sample(){)

    ~Sample(){if(p)delete p;)

    Sample(const Sample& s){

    ______

    }

    void SetData(int data) {p=new int(data);}

    private:

    int*p;

    };


    正确答案:p=new int; p=s.p;
    p=new int; p=s.p; 解析:此题考查的是复制构造函数。复制构造函数定义的一般格式如下:类名::类名(const类名&引用对象名){复制构造函数体)。而在类中的声明部分可省去“类名::”。

  • 第6题:

    使用VC6打开考生文件夹下的工程test12_1,此工程包含一个源程序文件test_12.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

    fun (Sample &p) 1 2

    fun (Sample *p) 3 4

    20 10

    源程序文件test12_1清单如下:

    include<iostream .h>

    class Sample

    {

    private:

    int x,y;

    static int z;

    public:

    Sample(int a,int b){ x=a;y=b; }

    void fun(Sample &p);

    void fun(Sample *p);

    static void print(Sample s);

    };

    /*************** found ***************/

    int z=10;

    void Sample::fun(Sample &p)

    {

    x=p.K;y=p.y;

    cout<<"fun(Sample &p)"<<" "<<x<<" "<<y<<endl;

    }

    void Sample::fun(Sample *p)

    {

    /************** found **************/

    x=p.x; y=p.y;

    cout<<"fun(Sample *p) "<<" '<<x<<" "<<y<<endl;

    }

    void Sample::print (Sample s)

    {

    /*************** found *****************/

    x=20;

    cout<<s. x<<" "<<z<<endl;

    }

    void main()

    {

    Sample p(1,2),q(3,4);

    p. fun(p);

    p. fun(&q);

    p. print(p);

    }


    正确答案:(1)错误:int z=10; 正确:int Sample::z=10; (2)错误:x=p.x;y=p.y; 正确;x=p->x;y=p->y; (3)错误:x=20; 正确;s.x=20;
    (1)错误:int z=10; 正确:int Sample::z=10; (2)错误:x=p.x;y=p.y; 正确;x=p->x;y=p->y; (3)错误:x=20; 正确;s.x=20; 解析:(1)主要考查考生对于静态成员初始化定义的理解,静态成员使用关键字static修饰,应对其进行类体外初始化,格式为数据类型“类名::静态变量名:初始值”;
    (2)主要考查考生对于指针与引用区别的掌握,x和y都是指针类型的变量,应使用“->”调用类的成员;
    (3)主要考查考生对于静态成员函数的掌握,在静态成员函数中使用非静态成员,需要用对象来引用。

  • 第7题:

    若有以下程序: 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,所以构造函数只能通过初始化列表来初始化它。

  • 第8题:

    有以下程序:includeusing namespace std;class sample{private:int x;static int y;

    有以下程序: #include<iostrearn> using namespace std; class sample { private: int x; static int y; public: sample (int A) ; static void print (sample s); }; sample::sample(int A) { x=a; y+=x; }

    A.x=10,y=20

    B.x=20,y=30

    C.x=30,y=20

    D.x=30,y=30


    正确答案:B
    解析:本题考核静态数据成员和静态成员函数的应用。类sample中定义两个私有成员x和y,其中y为静态数据成员。并定义函数print()为静态成员函数。在主函数中,定义对象s1(10)时,通过构造函数使对象s1的私有成员x=10,静态数据成员y=10。定义s2(20)时,通过构造函数使对象s2的私有成员x=20,静态数据成员y=10+20=30。程序最后调用静态成员函数print输出对象s2的私有成员x的值20,对象s1、s2共享的静态数据成员y的值30。

  • 第9题:

    有以下程序:include using namespace std;class sample{private: int x;public: void

    有以下程序: #include <iostream> using namespace std; class sample { private: int x; public: void setx(int i) { x=i; } int putx () { return x; } }; int main ( ) { sample *p; sample A[3]; A[0] .setx(5); A[1] .setx (6); A[2] .setx(7); for (int j=0;j<3;j++) { p=&A[j]; cout<<p->putx () <<", "; } cout<<end1; return 0; } 执行后执行结果是( )。

    A.5,6,7,

    B.5,5,5,

    C.6,6,6,

    D.7,7,7,


    正确答案:A
    解析:对象数组是指数组元素为对象的元素,该数组中的每一个元素都是同一个类的对象。程序中,定义了类sample的对象数组A,并调用各个对象的成员函数给其私有数据成员赋值。然后通过for循环将其值输出。

  • 第10题:

    以下程序段有()处错误。include using namespaces std;class Sample{private: int n;p

    以下程序段有( )处错误。 #include <iostream> using namespaces std; class Sample { private: int n; public: Sample (int i} { n=i; } void setvalue(int i) { n=i; } void display() { cout<<"n="<<n<<end1; } }; int main ( ) { const Sample a(lO); a. setvalue (5)'; a.display(); return 0; }

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:本题考查常对象的掌握。本程序中有两个错误:①第1处错误是“a.setvalue(5);”语句,由于对象a为常对象,所以对象a的私有数据成员n不能被更新。②第2处错误是语句“a.display();”。由于对象a为常对象,所以通过对象a只能调用它的成员函数,而成员函数display()不是常成员函数。

  • 第11题:

    若有如下程序: include using namespaces std;int s=O;class sample {static int n;p

    若有如下程序: #include <iostream> using namespaces std; int s=O; class sample { static int n; public: sample(int i) { n=i; } static void add() { s+=n; } }; int sample::s=O; int main() { sample a(2),b(5); sample: :add(); cout<<s<<end1; 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。

  • 第12题:

    有如下类定义:

    class Sample{

    public:

    Sample();

    ~Sample();

    private:

    static int data;

    };

    将静态数据成员data初始化为0的语句是【 】。


    正确答案:Sample::data=0;
    Sample::data=0; 解析:将静态数据成员data初始化为0的语句是“Sample::data=0;”,因为Sample是一个公共类,可以这样进行初始化。

  • 第13题:

    在下面的类定义中,this指针的用途是______。 include class Sample { int x,y; publi

    在下面的类定义中,this指针的用途是______。

    include<iostream.h>

    class Sample

    {

    int x,y;

    public:

    Sample(int i,int j){x=i;y=j;}

    void assign(Sample sa);

    };

    void Sample::assign(Sample p)

    {

    if(this!=&p)

    {

    x=p.x;

    y=p.y;

    }

    }


    正确答案:防止类对象自己给自己赋值
    防止类对象自己给自己赋值 解析:对象给自己赋值是一种自毁行为,这种行为如果不加以判断,可能造成无意识的破坏。

  • 第14题:

    有如下程序:include using namespace std;class sample{private:int x,y;public: sam

    有如下程序: #include <iostream> using namespace std; class sample { private: int x,y; public: sample(int i,int j) { x=i; y=j; } void disp () { cout<<"disp1"<<end1; } void disp() const { cout<<"disp2"<<end1; };int main () { const sample a(1,2); a.disp(); return 0; } 该程序运行后的输出结果是

    A.disp1

    B.disp2

    C.disp1 disp2

    D.程序编译时出错


    正确答案:B
    解析:本题考核常对象、常数据和常函数。C++中,在定义常对象时必须进行初始化,而且不能被更新。如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。题中,对象a被定义成类sample的常对象,所以通过对象a只能调用其常成员函数disp()。所以程序最后输出disp2。

  • 第15题:

    下列类的构造函数不能通过编译,正确的构造函数应该是______。 include class Sample

    下列类的构造函数不能通过编译,正确的构造函数应该是______。

    include<iostream.h>

    class Sample

    {

    public:

    int n;

    const int con;

    Sample(int m) {con=m+1;n=m;}

    void disp( ) {cout<<"normal:n="<<n<<endl;}

    void disp( )const {cout<<"static:n="<<n<<endl;}

    };

    void main( )

    {

    const Sample a (12);

    Sample b (13);

    a.disp( );

    b.isp( );

    cout<<a.n<<","<<b.con<<endl;

    }


    正确答案:Sample(int m):con(m+1){n=m;)
    Sample(int m):con(m+1){n=m;) 解析:本题考察常数据成员的初始化方法。常数据成员的定义必须出现在类体中,而且初始化只能通过构造函数的成员初始化列表进行,而且不能被更新。

  • 第16题:

    下面程序的运行结果是()。includeclass Sample{int x, y;public:Sample() { x=y=0;

    下面程序的运行结果是( )。#include<iostream.h>class Sample{int x, y;public:Sample() { x=y=0; }Sample(int a, int b) { x=a; y=b; }void (lisp(){cout<<"x="<<x<<",y="<<y<<end1;}};void main(){Sample s(2,3), *p=&s;p->disp();}

    A.x=1, y=2

    B.x=2, y=4

    C.x=2, y=3

    D.x=4, y=3


    正确答案:C

  • 第17题:

    下列程序的运行结果是【 】。includeclass Sample{int a;public: Sample(int aa=0) {a

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

    include<iostream, h>

    class Sample

    {

    int a;

    public:

    Sample(int aa=0) {a=aa;}

    ~Sample() {cout<<"Sample="<<a<<;}

    class Derived: public Sample

    {

    int b;

    public:

    Derived(int aa=0, int bb=0): Sample(aa) {b=bb;}

    ~De rived() {cout <<"Derived="<<b<<'';}

    void main()

    {

    Derived dl (9)

    }


    正确答案:Derived=0 Sample=9
    Derived=0 Sample=9 解析:本题考察派生类和基类的构造函数,析构函数的执行顺序。

  • 第18题:

    有以下程序:includeusing namespace std;class sample{private:int x;public:sample(

    有以下程序: #include<iostream> using namespace std; class sample { private: int x; public: sample(int A) { x=a; friend double square(sample s); }; double square(sample s) { return S.X*S.K; } int main() { sa

    A.20

    B.30

    C.900

    D.400


    正确答案:C
    解析: 本题考查友元函数的应用。程序中函数square是类sample的一个友元函数,它可以直接访问类sam- pie的所有成员。它的功能是返回类sample的私有数据成员x的平方。所以程序的执行结果是900。

  • 第19题:

    有以下程序:include using namespace std;class sample{private: int x; static int

    有以下程序:#include <iostream>using namespace std;class sample{private: int x; static int y;public: sample(int a); static void print(sample s);};sample:: sample(int a){ x=a; y+=x;}void sample:: print(sample s){ cout<<"x="<<s. x<<",y="<<y<<end1;}int sample:: y=0;int main(){ sample s1(10); sample s2(20); sample:: print(s2); return 0;}程序运行后的输出结果是( )。

    A.x=10,y=20

    B.x=20,y=30

    C.x=30,y=20

    D.x=30,y=30


    正确答案:B

  • 第20题:

    有如下类声明: class SAMPLE { int n; public: SAMPLE(int i=0):n(i) { } void setValue(int nO); }; 下列关于getValue 成员函数的实现中,正确的是

    A.SAMPLE::setValue(int nO){ n=nO;}

    B.void SAMPLE::setValue(int nO){ n=nO;}

    C.void setValue(int nO){ n=nO;}

    D.(int nO){ n=nO;}


    正确答案:B
    解析:本题考查了成员函数的定义格式。在类外部对成员函数定义的一般格式为:返回类型>类名>::成员函数名>(参数表>)
      {
      函数体>
      }
      故本题的正确答案为选项B。

  • 第21题:

    有以下程序:includeusing namespace std;Class sample{private:int n;public:sample(

    有以下程序: #include<iostream> using namespace std; Class sample { private: int n; public: sample(){} sample(int m) { n=m; } sample add(sample s1,samplc s2) { this-->n=s1.n+s2.n; return(*this); } void disp(

    A.n=10

    B.n=5

    C.n=20

    D.n=15


    正确答案:D
    解析: 本题考查this指针的使用类成员函数add中通过this指针实现私有数据成员n的赋值。

  • 第22题:

    有如下类声明: class SAMPLE { int n: public: SAMPLE(int i=0):n(i){} void setValue(int nO); }; 下列关于9etValue成员函数的定义中,正确的是( )。

    A.SAMPLE::setValue(int nO){n=n0;}

    B.void SAMPLE::setValue(int胡){n=n0;

    C.void setValue(int nO){n=n0;}

    D.setValue(int nO){n=n0;}


    正确答案:B
    本题考查在类外定义类的成员函数,需要使用作用域限定符“::”,属于基础知识,本题答案为8。

  • 第23题:

    请在下列程序中的横线处填写正确的语句:

    class Sample{

    public:

    Sample()()

    ~Sample(){}

    void SetData(int data){//将Sample类成员变量data设置成形参的值

    ______

    }

    private:int data;

    };


    正确答案:Sample::data;
    Sample::data; 解析:此题考查的是this指针。由于Sample类的数据成员和函数的形参名称都是data,如果在函数中直接使用data引用的是形参变量而不是Sample类的数据成员。解决办法两种有:一是通过this指针,在类的成员函数中this代表函数所属对象的指针,即可填this->data:二是通过作用域运算符“::”明确指出访问的是Sample类的成员,所以在横线处填入Sample::data。