C++学习(14)

来源:互联网 发布:淘宝寄错东西了怎么办 编辑:程序博客网 时间:2024/06/06 18:29

1、若有定义语句,int b=2,则表达式(b<<2)/(3||b)的值为:8.

分析:(3 || b出现短路,结果为1;b<<2左移2位扩大4倍变成8,所以最终结果为8/1=8)


2、对于C/C++语言的函数,函数的定义不能嵌套,但函数调用可以嵌套


3、实型常量又称实数或浮点数。在C语言中可以用两种形式表示一个实型常量。 

小数形式 
        小数形式是由数字和小数点组成的一种实数表示形式,例如0.123、.123、123.、0.0等都是合法的实型常量。 
        注意:小数形式表示的实型常量必须要有小数点。 
指数形式 
        这种形式类似数学中的指数形式。在数学中,一个可以用幂的形式来表示,如2.3026可以表示为0.23026×10^1 2.3026×10^0 23.026×10^-1等形式。在C语言中,则以“e”或“E”后跟一个整数来表示以“10”为底数的幂数。2.3026可以表示为0.23026E1、2.3026e0、23.026e-1。C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、5e3.6、.e、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。 
        

程序运行的过程中,其值不能被改变的量称为常量。常量有不同类型,其中12、0、-5为整型常量。'a''b'为字符常量。而4.6、-8.7则为实型常量。 
        一个实型常量可以赋给一个 float 型、double 型或 long double 变量。根据变量的类型截取实型常量中相应的有效位数字。 


4、C++语言的if语句嵌套时,if与else的配对关系是每个else总是与它上面的最近的if配对。


5、假设A为抽象类,下列声明(D)是正确的。

A、int fun(A);B、 A obj;C、A fun(int);D、A*p;

分析:抽象类不能初始化,不能当返回值,不能做参数,可以作为支柱变量,因为此时还没有初始化。在C++中,含有纯虚函数的类称为抽象类,它不能生成对象。

抽象类不能实例化,只能被继承,故可以定义其指针对象,并让子类对象指向它,可以实现多态。


补充:

纯虚函数是在基类声明的虚函数,它在基类中没有定义,但是要求派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后面添加“=0”  
比如 virtual void f()=0; 
而c++中包含纯虚函数的类称为抽象类,由于抽象类中包含了没有定义的纯虚函数,所以不能定义抽象类的对象。 
总结:1.抽象类只能用作其他类的基类,不能定义抽象类的对象。 
2.抽象类不能用于参数类型、函数返回值或显示转换的类型 。
3.抽象类可以定义抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。 


6、子类的指针访问虚函数访问的是子类的方法;

子类的指针访问非虚函数访问的是子类的方法;

父类的指针访问虚函数访问的是父类的方法;(错误。父类指针访问虚函数时,可能访问父类的方法,也可能访问的是子类的方法,在运行时才能决定,这是动态绑定)

父类的指针访问非虚函数访问的是父类的方法;


7、下面代码输出结果:4.

#include<iostream>using namespace std;int main() {int  a[4]={1,2,3,4};int *ptr=(int *)(&a+1); printf("%d",*(ptr-1));return 0;}
分析:指针的实质为:地址+步长。指针的类型决定了步长。 
定义了数组a[4],其中a,&a,&a[0]都是数组的起始地址。但是步长有区别,也就是指向的类型不同 
a等同于a+0等同于&a[0],是指向数组第一个元素的指针,步长为指向的元素所占用的地址空间为sizeof(int) 。 
&a也是指向数组第一个元素的指针,但其意义是指向整个数组的首地址,指向的类型为整个数组,所以其步长为4*sizeof(int) 


8、下列代码输出结果是:173.

#include<iostream>using namespace std;int main() {unsigned char i=7;int j=0;for(;i>0;i-=3) {++j;}printf("%d\n",j);return 0;}

A、2

B、死循环 

C、173

D、172

分析:这题正着推不容易,可以考虑反着推 。要想退出循环  最后必定是 i=0 。根据选项 
A:(0 + 2*3) % 256 = 6  不是7 , 所以A错误 
C:  (0 + 173*3) % 256 = 7 ,           所以C可以 
D:   (0 + 172*3) % 256 = 4 不是7,所以D错误 
B:既然C可以,当然B就错误 


unsigned char 类型的值为0~255,共256个数。所以可得方程式3*j - 7 =256 *n(n=0,1,2……),分别把n=0,1,2……带入得,n=0 或 1时无解,当n=3时,可得j=173.


9、对于定义"int *p",p可能是一个指向int型的值得指针;也可能是一个动态数组、



原创粉丝点击