更多“假定MyClas为一个类,那么该类的析构函数是()。A.void~MyClas();B.~MyClas(int n);C.MyClas();D.~M ”相关问题
  • 第1题:

    假定用户没有给一个名为MyClas的类定义析构函数,则系统为其定义的默认析构函数形式为【 】。


    正确答案:~MyClas()
    ~MyClas() 解析:析构函数名是在类名前加符号“~”,它既没有返回值,也没有参数。

  • 第2题:

    已知类MyClas有一个只需要一个double型参数的构造函数,其将运算符“+”重载为友元函数。要使语句序列 MyClas x(1.2),y(2.3),z(0);z=x+y; 能够正常运行,运算符函数 operator+应在类中声明为( )。

    A.friend MyClas operator+(int,MyClas&);

    B.friend MyClas operator+(MyClas,MyClas);

    C.friend MyClas operator+(MyClas,MyClas&);

    D.friend MyClas operator+(MyClas&,MyClas);


    正确答案:B
    解析:由重载的定义格式可知运算符函数应在类中声明为:friendMyClasoperator+(MyClas,MyClas);

  • 第3题:

    类MyClas的定义如下: class MyClas{ public: MyClas(){} MyClas(int a){ value=new.int(i); } int *value; }; 若要对类中的value赋值,则下面的语句中正确的是( )

    A.MyClas x;x.value=10;

    B.MyClas x; *x.value=10;

    C.MyClas x;x. *value=10;

    D.MyClas x(10);


    正确答案:D
    解析:选项A中,直接对地址赋值,因此选项A是错误的;c++中不能对未初始化的指针变量赋值,因此选项B是错误的;选项C有语法错误;选项D通过调用类的构造函数给value赋初值10。

  • 第4题:

    下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该程序。

    class Myclas{

    int *x;

    public:

    MyClas(int n);

    ~MyClas();

    };

    MyClas::MyClas(intn){

    【 】;

    }

    MyClas::~MyClas(){

    【 】;

    }


    正确答案:x=new int(n)delete x
    x=new int(n),delete x 解析:在类的构造函数中,是申请内存空间,并使指针x指向构造函数的形参n,所以构造函数的函数体应为:x=newint(n);。在析构函数中,是释放类的私有成员,即指针变量x,所以析构函数的函数体应该为deletex;。

  • 第5题:

    假定MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。 A.void~MyClass( );

    假定MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。

    A.void~MyClass( );

    B.~MyC

    C.ass(intn);

    D.MyClass( );

    E.~MyClass( );


    正确答案:D
    D。【解析】C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass。