浪潮笔试选择题

1. C++若定义类A:

class A{

    public:

       A();

      A(int x);

}

执行语句A a(4), b[3], *p[2]; 则自动调用该类构造函数的次数是?

共4次。

A a(4) //这一定义,调用类A的赋值构造函数A(int x) 一次。
A b[3] //相当于定义了类型为A对象的数组,其元素个数为3,即调用三次类A的默认构造函数A()。
A *p[2] //定义了一个类型为A*的数组,即指向A类对象的指针数组,并未产生类A的对象,不调用构造函数。

关于构造函数调用次数:

A a(4);//定义一个对象,调用1次构造函数。
A b[3];//定义含有3个元素的数组,实际上定义3个对象,所以调用3次构造函数。
A *c;//定义指向类对象的指针,但没有进行实际的内存分配,所以不调用构造函数。
A **d;//定义指向类对象指针的指针,但没有进行实际的内存分配,所以不调用构造函数。
A *e[2];//定义含有两个指向类对象的指针的数组,但没有进行实际的内存分配,所以不调用构造函数。
A *f=new A;//涉及到内存的分配,调用1次构造函数。
A *g=new A[2];//涉及到内存的分配,调用2次构造函数。

总结:只有涉及到内存分配的时候,才会调用构造函数。普通对象调用一次,对象数组调用N次(该数组含有N个元素)。只定义指针而不给指针赋值,则不涉及内存分配,不调用构造函数。

 

2.下列语句中错误的是
A.const int a;
B.const int a=10;
C.const int*point=0;
D.const int*point=new int(10);
E.const int &a;

A.E.

用const定义一个常量,一旦定义好则在程序的任何地方都不能更改,所以必须在定义时赋初值。

常引用:

对引用而言,新定义的引用变量是不申请内存单元的,与它引用的对象共同同一块变量存储单元,正是因为这一特性,在声明一个引用的同时必须将其初始化。

常引用就是在引用之前加上const对引用进行限制,使得该引用在函数中不能进行改变(但可以改变原变量的值)。

int a = 6;      // 定义整型变量a,初值为6
const int &b = a;   // 声明常引用,不允许改变b的值
b = 8;      // 改变常引用b的值,错误
a = 8;      // 改变a的值,正确

3. 编译期会出现的错误提示?

编译器在编译时是以c/c++文件为单位进行的, 如果项目中没有c/c++文件,那么你的项目将无法编译。经过预编译得到的输出文件中,将只有常量。如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。

 

4. 已知:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
cout<< *(*(a + 1) + 2)的结果?

结果为6

5. 下列程序段中包含4个函数,其中具有隐含this指针的是

int fun1();
class Test(){
public:
    int fun2();
    friend int fun3();
    static int fun4();
}

fun2()

this指针是成员函数所属对象的指针,是指向类对象的地址,是一个隐含的指针,隐含于每个类的非静态成员函数中。fun1()是外部函数,fun3()是友元函数,fun4()是静态成员函数。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值