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、

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android NDK的初步认识(Android Studio 2.2 + CMake)

序言: 做NDK开发也有一段时间了,还记得初学的时候各种找大神、搜教程,最后在诸多大神的帮助下,成功的做出了我的第一个NDK小玩意,很感谢他们,而后慢慢的越入越深(keng),今天在群里看到了很多像我...

OpenCV2.2+CMake2.8.4+VS2010+WIN7

OpenCv英文网站http://opencv.willowgarage.com/,有很多最新的资料 Google英文搜索Intel OpenCV,很多实例,不过得下载Intel的library...

Ubuntu 10.10从零开始建立android 2.2 froyo开发环境

为了建立android的开发环境,刚安装了一个Ubuntu 10.10 32-bit,记录下建立android 2.2开发环境的过程和解决的问题。准备下载环境参照官方网站准备下载环境 $ sudo a...

Swift2.2 学习笔记(十一) ___集合类型

数组 数组中使用有序列存储相同类型的多重数据。相同的值可以多次出现在一个数组不同的位置中。 Swift 数组对存储数据有具体要求。不同于oc的NSArray 和 NSMutable...

NDK开发 从入门到放弃(七:Android Studio 2.2 CMAKE 高效NDK开发)

转载地址:http://blog.csdn.net/cuiyufeng2/article/details/64125594 前言 之前,每次需要边写C++代码的时候,我...

Android平台从Froyo 2.2开始支持jni单步调试了!

原文地址::http://blog.csdn.net/jinhill/archive/2011/01/09/6124996.aspx     一、写在前面的话 前段时间从网上看了google的...

hdu ACM Steps 2.2

2.2.1 Fibonacci 通项公式求值,再取对数求高四位,很巧妙的方法 n较大时小数部分的幂趋向0,可以舍弃。 取对数后值的整数部分代表位数,小数部分保存了具体信息(类似科学计数法) ...

在VS2010下安装配置OpenCV2.2

在VS2010下安装配置OpenCV2.2 (本文是借鉴别人在VS2010下安装OpenCV-2.3.0-win的情况下配置的) 操作系统:Windows 7 中文旗舰版; 编译环境:Visu...

Android2.2快速入门

Android2.2快速入门   前言   这是前段时间用于公司Android入门培训的资料,学习Android三周时间收集整理的,时间仓促,希望能对像我这样还没入门就直接上项目的人一点帮助...

hadoop2.2环境配置

场景介绍:主机mac pro,安装了两台虚拟机,虚拟机均为Ubuntu系统 ubuntu系统配置jdk 1、到 Sun 的官网下载 http://www.oracle.com/tec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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