对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?

题目

对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有如下类定义: class B { void fun1() { protected: double var1; public: void fun2() { }, class D: public B protected: void fun3() { };已知obj是类D的对象,下列语句中不违反类成员访问控制权限的是

A.obj.fun1();

B.obj.varl;

C.obj.fun2();

D.obj.fun3();


正确答案:C
解析:本题考查的知识点是:基类成员在派生类中的访问属性。基类中公有成员和保护成员在派生类中的访问属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员:派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。本题中,D类从B类公有继承,B类中fun1()为私有、fun2()为公有、varl为保护,公有继承到D类后fun1()不可访问、fun2()仍为公有、varl仍为保护。D类自身的fun3()是保护属性。所以综上所述,只有从B类继承的fun2()为公有属性,故本题应该选择C。

第2题:

关于下面程序段说法正确的是()。class X { private: int n; public: X(X&); }; X::X(X&x) {n=x.n} X obj1,obj2(obj1);

A.语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1

B.语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2

C.X(X&x)函数中不能访问对象的私有成员

D.X(X&x)中的&符号可以删除


正确答案:B

第3题:

如果程序里有叫obj1和obj2的对象,当使用语句“obj2=obj1;”时的结果是( )。

A.在obj2中的实例变量被赋予obj1中相同的值

B.obj2和obj1被认为是同一个变量

C.obj2的值赋给了obj1,而obj2为空

D.以上都不对


正确答案:B
解析:运算符“=”并不将值从一个对象复制到另一个对象中。相反,它把两个变量指向同一个对象。

第4题:

有如下类定义: classB{ public:voidfunl(){} privace:voidfun2(){} protected:voidfun3(){} }; classD:publicB{ protected:voidfun4(){} }; 若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。

A.obj.fun1();

B.obj.fun2();

C.obj.fun3();

D.obj.fun4();


正确答案:A
A。【解析】fun2为Sample的私有函数无法访问,fun3与fun4都为protected函数,所以也没有访问权限。

第5题:

友元运算符obj1>obj2被C++编译器解释为( )。

A.operator>(obj1,obj2)

B.>(obj1,obj2)

C.obj2.operator>(obj1)

D.obj1.operator>(obj2)


正确答案:A

第6题:

main函数中发生编译错误的语句是______。 include class A { public: int a; const i

main函数中发生编译错误的语句是______。

include<iostream.h>

class A

{

public:

int a;

const int b;

A( ):a(10),b(20){}

void fun( )const

{

cout<<"a="<<a<<"\tb="<<b<<endl;

}

};

void main( )

{

A obj1;

const A*ptr=new A;

ptr=&obj1;

ptr->a=100;

ptr->fun( );

}


正确答案:ptr->a=100;
ptr->a=100; 解析:本题考察的是const的使用。const修饰的是指针变量的值,指针本身是可变的,但指针所指对象的值是常量,即ptr->a是不能被改变的。

第7题:

若有如下类定义: class B{ void fun1( ){} private: double varl; public: void fun2( ){ } }; class D:public B{ private: void fun3( ){ } }; 已知obj是类D的对象,下列语句中不违反类成员访问控制权限的是

A.obj.fun1( );

B.obj.varl;

C.obj.fun2( );

D.obj.fun3( );


正确答案:C

第8题:

有如下程序:includeusing namespace std;class A{public:static int a;void init(){a

有如下程序: #include<iostream> using namespace std; class A{ public: static int a; void init(){a=1;} A(int a=2){init(); a++;} }; int A::a=0; A obj; int main() { cout<<obj.a; return 0; 运行时输出的结果是( )。

A.0

B.1

C.2

D.3


正确答案:B
解析:有如下程序:  #includeiostream>  using namespace std;  class A{  public:  static int a;  void init(){a=1;}  A(int a=2){init(); a++;}  };  int A::a=0;  A obj;  int main()  {  coutobj.a;  return 0;  运行时输出的结果是(  )。 

第9题:

有如下类定义: class B { public:void funl{} private:void fun2{} protected:void fun3{} }; class D:public B j protected:void fun4{} }; 若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。

A.obj.fun1;

B.obj.fun2;

C.obj.tim3;

D.ohj.fun4;


正确答案:A
本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数fun1,故本题答案为A。

第10题:

当对象obj调用其类成员函数init()时,init()的this指向的是( )。

A.对象obj

B.init()

C.类本身

D.其他的对象


正确答案:A
解析:本题考查关键词this的用法。在类中除了可以声明成员变量外,还可以在方法体中声明局部变量,局部变量的作用域只在该方法的内部,当方法返回时,局部变量也就不再存在。此外,如果局部变量的名称和类成员变量的名字相同,类成员变量就会被隐藏。如果方法中确实存在局部变量和类成员变量名字相同的情况,又需要在该方法中改变类成员变量的值,就需要使用this关键字。this用在一个方法中用来引用当前对象,它的值是调用该方法的对象。

更多相关问题