2.2

原创 2013年12月03日 19:59:36

1、联合输出

复制代码
#include <stdio.h>
union
{
  int i;
  char x[2];
}a;

void main()
{
  a.x[
0=10
  a.x[
1=1;
  printf(
"%d",a.i);
}
复制代码

答案:266 (低位低地址,高位高地址,内存占用情况是0x010A)

2、头文件中的ifndef/define/endif 的作用?

答:防止该头文件被重复引用。

3、面向对象的三个基本特征,并简单叙述之?

1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)

2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

3. 多态系统能够在运行时,能够根据其类型确定调用哪个重载的成员函数的能力,称为多态性。

4、多态的作用?

1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;

2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用

5、有哪几种情况只能用intializationlist 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

6、 C++是不是类型安全的?
答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

7、main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行,gcc的编译命令等等。

8、class A{}; ---->sizeof(A) = 1

为了给对象一个地址以便区分同一类的不同对象(如A arr[10])

9、比较c++四种类型转换

dynamic_cast 主要用于执行“安全的向下转型(safe downcasting)”,也就是说,要确定一个对象是否是一个继承体系中的一个特定类型。它是唯一不能用旧风格语法执行的强制转型,也是唯一可能有重大运行时代价的强制转型。
   static_cast 可以被用于强制隐型转换(例如,non-const 对象转型为 const 对象,int 转型为 double,等等),它还可以用于很多这样的转换的反向转换(例如,void* 指针转型为有类型指针,基类指针转型为派生类指针),但是它不能将一个 const 对象转型为 non-const 对象(只有 const_cast 能做到),它最接近于C-style的转换。
    const_cast 一般用于强制消除对象的常量性。它是唯一能做到这一点的 C++ 风格的强制转型。 
reinterpret_cast 是特意用于底层的强制转型,导致实现依赖(implementation-dependent)(就是说,不可移植)的结果,例如,将一个指针转型为一个整数。这样的强制转型在底层代码以外应该极为罕见。

10、分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

BOOL :  if ( !a ) or if(a)
int :   if ( a ==0) or if (0 == a)
float : const float EXP =0.000001
  
if ( a < EXP&& a >-EXP)
pointer : 
if ( a != NULL) or if(a == NULL)

11、类成员函数的重载、覆盖和隐藏区别?

a.成员函数被重载的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
b.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

12、如何打印出当前源文件的文件名以及源文件的当前行号?
cout << __FILE__ ;
cout<<__LINE__ ;
__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的

13、如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

对于未编译的:

#ifdef __cplusplus
  cout
<<"c++";
#else
  cout
<<"c";
#endif

 对于已经编译的:

nm命令查看函数名,C++会修改。 nm  test.o

14、

MATLAB---BP神经网络模型(二)

回到家的第三天,今天还是看了神经网络模型,这一次看到的比较系统做一下笔记。某一个比赛中15名男子的成绩如下图所示,现在第十五名运动员的跳高成绩不见了,请预测其成绩。我们把  所有人的除了调高以外的成绩...
  • Jonh_
  • Jonh_
  • 2018年01月17日 13:29
  • 91

Apache2.4.x与Apache2.2.x的一些区别

Apache2.4.x与Apache2.2.x的一些区别
  • xianda9133
  • xianda9133
  • 2017年03月10日 01:06
  • 1058

王爽《汇编语言》答案 检测点2.2

1.00001h-1000f h  分析:偏移地址的最大寻址为64k,最小寻址为00010h+0000h=00010h,最大寻址为00010h+ffffh=1000fh2.1001h-2000h...
  • yj1981
  • yj1981
  • 2006年03月30日 19:54
  • 1900

Gradle version 2.2 is required. Current version is 2.10

gradle build的时候提示错误* What went wrong: A problem occurred evaluating project ':app'. > Failed to appl...
  • a06_kassadin
  • a06_kassadin
  • 2016年01月28日 17:13
  • 3359

Vcastr 2.2 flv 网络播放器

导读:   Vcastr2.2 是一款FLV网络播放器,可以用于各种新闻系统或者blog系统,Vcastr 拥有众多特点和自定义设置,经过不断升级修正,已经具备用户需要的大多数基本功能。  例子   ...
  • chief1985
  • chief1985
  • 2007年11月07日 23:43
  • 5455

Android SDK 2.2 离线安装

Android SDK 2.2 离线安装
  • DavidHsing
  • DavidHsing
  • 2010年12月31日 03:33
  • 22531

android studio 2.2下载地址

Windows: https://dl.google.com/dl/android/studio/ide-zips/2.2.0.0/android-studio-ide-145.2878421-win...
  • android_ls
  • android_ls
  • 2016年05月20日 14:27
  • 14059

apache2.4版本与2.2版本的差异

1、在2.2版本中eventMPM还处于测试阶段,而2.4版本event已经可以正常使用了 2、2.4版本的3个MPM工作模式使用的是DSO动态模块来实现的,而2.2则是直接编译成了静态模块 3、...
  • qq_37187976
  • qq_37187976
  • 2018年01月30日 22:50
  • 28

安装RVDS2.2破解版

安装RVDS2.2破解版 1.       我的RVDS2.2文件时iso文件,所以需要先安装虚拟光驱DAEMON Tools2.       通过安装的DAEMON Tools来加载RVDS2.2的...
  • LoongEmbedded
  • LoongEmbedded
  • 2010年10月27日 22:29
  • 8298

Gradle version 2.2 is required错误解决

A problem occurred evaluating project ':app'. > Failed to apply plugin [id 'com.android.application'...
  • Rflyee
  • Rflyee
  • 2016年04月05日 20:29
  • 10241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2.2
举报原因:
原因补充:

(最多只允许输入30个字)