精华内容
下载资源
问答
  • 基本数据类型有哪几类?包含String吗? 包含整型:byte short int long 浮点型:float double 字符型:char 采用的 unicode编码 布尔:boolean 不包含String, String是引用类型 写出基本数据类型自动转化的流程图...
    1. 标识符的命名规则需要注意哪几点?
      1不能以数字开头 2 不能是关键字 3 区分大小

    2. 基本数据类型有哪几类?包含String吗?
      包含整型:byte short int long
      浮点型:float double
      字符型:char 采用的 unicode编码
      布尔:boolean
      不包含String, String是引用类型

    3. 写出基本数据类型自动转化的流程图
      byte->short->int->long->float->double
      char->

    4. 整型默认的是什么类型,浮点型(实数型)默认的是什么类型?
      整型默认int类型 浮点型默认double类型

    5. 对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?
      变量名和函数名,常量名用小驼峰命名法
      如果是一个单词 所有字母均小写
      如果多个单词组成 则第一个单词的 首字母小写 从第二个开始后边 的每个单
      包名,类名接口名用大驼峰命名法
      每个单词的 首字母都大写

    6. 定义一个变量需要注意什么
      在定义变量的时候要遵循的命名规则1不能以数字开头2 不能是关键字 3 区分大小
      变量在声明之后 在第一次使用之前必须进行初始化(赋值)
      在同一个大括号范围内 变量名不允许重名

    7. 强制类型转化可能出现的问题
      可能造成精度降低或溢出

    8. char型变量中能不能存贮一个中文汉字?为什么?
      char类型变量时能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

    9. 定义float f=3.4;是否正确?
      不正确,精度不准确,应该用强制类型转换,如:float = (float)3.4或float f = 3.4f。没有小整型默认int类型 浮点型默认double类型,int转成long系统自动转换没有问题,因为后者精度更高,但是double转成float就不能自动转换了,所以后面得加上一个f

    10. String是最基本的数据类型吗
      不是,是引用数据类型

    11. 根据运算符的功能,我们把运算符分成哪几类?
      算数运算符 赋值运算符 自增自减运算符 关系运算符 逻辑运算符 位运算符 三元运算符

    12. 用最有效的的方法算出2称以8等于几
      用位运算 2<<3

    13. char型变量中是否可以存储一个汉字?
      char类型变量时能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

    14. float f=3.4;是否正确,表达式15/22的值是多少
      不正确,精度不准确,应该用强制类型转换,如:float = (float)3.4或float f = 3.4f。没有小整型默认int类型 浮点型默认double类型,int转成long系统自动转换没有问题,因为后者精度更高,但是double转成float就不能自动转换了,所以后面得加上一个f
      表达式15/2
      2值是14

    15. Java的基本数据类型有哪些?String是基本数据类型吗?
      基本数据类型有8个整型:byte 、short 、int 、long
      浮点型:float 、 double
      字符型:char
      布尔型:Boolean
      String不是基本数据类型,是引用类型

    16. 以下代码的运行结果
      public static void main(String[] args) {
      char x = ‘x’;
      int i = 10;
      System.out.println(true? x : i);
      System.out.println(true? ‘x’ : 10);
      }
      120
      x

    17. 以下代码的执行结果
      public static void main(String[] args) {
      int a = 8, b = 3;
      System.out.println(a>>>b);
      System.out.println(a>>>b | 2);
      }
      1
      3

    18. 为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
      public static void main(String[] args) {
      int time = 89;
      int day = 89/24;
      int hour = 89%24;
      System.out.println(“共”+day+“天”+hour+“小时”);
      }

    19. 今天是周二,100天以后是周几?
      public static void main(String[] args) {
      int time = 100;
      int count = 2 + 100%7;
      System.out.println(“今天是周二,100天以后是周”+ count);
      }

    20. 编写代码实现两个变量值交换,int m = 3, n =5;

    21. 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。

    public class DataType
    {
    /*需求:4. 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。
    它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
    */
    public static void main(String[] args) {
    int f = 80;
    double c = (f-32)/1.8;
    System.out.println(“华氏度为”+f+“℉” +" 摄氏度为"+c+“℃”);
    }

    }

    展开全文
  • Java8复习提问

    2020-07-13 15:54:46
    Java运算符有哪几种?请分别详细描述一下 请解释 & 和 && 的区别? Java中程序的逻辑结构主要有哪几种? 什么是方法?什么是方法重载? 面向对象程序的几个特点?请详细介绍? 基本数据类型与引用...
    1. 什么是标识?由什么组成?
    2. Java数据类型的划分?
    3. 字符串的ASCII都是什么?
    4. Java运算符有哪几种?请分别详细描述一下
    5. 请解释 & 和 && 的区别?
    6. Java中程序的逻辑结构主要有哪几种?
    7. 什么是方法?什么是方法重载?
    8. 面向对象程序的几个特点?请详细介绍?
    9. 基本数据类型与引用数据类型最大的区别是什么?
    10. 两块内存空间的理解?
    11. 什么是构造方法?它的作用是什么?构造方法与普通方法的区别是什么?
    12. 什么是匿名对象?
    13. String类对象如何进行比较内容?String中 “==” 和 “equals()” 方法的区别?
    14. String两种实例化方式的区别?String类有什么特点?
    15. this关键字主要用在哪里?
    16. static关键字主要用在哪里?static声明的属性和普通属性的区别是什么?
    17. static方法和非static方法相互调用的限制?
    18. Java中代码块分为哪几种?
    19. 什么是内部类?
    20. 什么是链表?链表的基本操作特点?
    21. 什么是继承?继承有哪些限制?
    22. 什么叫方法的覆写?
    23. super()方法 与 this()方法的区别?关于 super 与 this 的区别?
    24. 什么是final关键字?
    25. 多态的两种描述形式?
    展开全文
  • 该组类有以下模板组成 1. template <;typename T, size_t DimNum>; class array_base;; 该是其他个数组的基类 // 由于编译器对C++标准实现参差不齐的原因,该实际 上不是根,...
  • 引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以种类型的数据结构存储,当引用类型和原始类型用作某个的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  • Java2程序设计基础第六章课后习题

    千次阅读 2019-08-03 21:26:51
    定义一个时所使用的修饰符有哪几个?每个修饰符的作用是什么?是否可以混用? 成员变量的修饰符有哪些?各修饰符的功能是什么?是否可以混用? 成员方法的修饰符有哪些?各修饰符的功能是什么?是否可以...
    1. 类与对象的区别是什么?
      类是对某一类事物的描述,是抽象的、概念上的定义;
      而对象则是实际存在的属该类事物的具体的个体,因而也称为实例。
    2. 如何定义一个类?类的结构是怎样的?
      定义类实际上就是定义类的属性与方法。
    [类修饰符] class 类名称 {
    	[修饰符] 数据类型 成员变量名称;
    	...
    	[修饰符] 返回值的数据类型 方法名(参数1,参数2,...) {
    		语句序列;
    		return [表达式];l
    	}
    }
    
    1. 定义一个类时所使用的修饰符有哪几个?每个修饰符的作用是什么?是否可以混用?
      public 将一个类声明为公共类,它可以被任何对象访问,一个程序的主类必须是公共类
      abstract 将一个类声明为抽象类,没有实现的方法,需要子类提供方法的实现
      final 将一个类声明为最终类即非继承类,表示它不能被其他类所继承
      friendly 友元类型,默认的修饰符,只有在相同包中的对象才能使用这样的类
      类的访问控制符只有一个public。其他的修饰符中,abstract和final相互对立,所以不能同时应用在一个类的定义中。
    2. 成员变量的修饰符有哪些?各修饰符的功能是什么?是否可以混用?
      public 公共访问控制符。指定该变量为公共的,它可以被任何对象的方法访问
      private 私有访问控制符。指定该变量只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此变量
      protected 保护访问控制符。指定该变量可以被它自己的类及其子类访问,在子类中可以覆盖此变量
      friendly 默认的友元访问控制符,在同一个包中的其他类可以访问此变量,而其他包中的类不能访问该变量
      final 最终修饰符。指定此变量的值不能改变
      static 静态修饰符。指定该变量被所有对象共享,即所有的实例都可使用该变量
      transient 过渡修饰符。指定该变量是一个系统保留,暂无特别作用的临时性变量
      volatile 易失修饰符。指定该变量可以同时被几个线程控制和修改
      其中成员变量的访问控制符private和protected可以组合一起使用。除了访问控制修饰符有多个之外,其他的修饰符都只有一个。一个成员变量可以被两个以上的修饰符同时修饰,但有些修饰符是不能同时定义在一起的。
    3. 成员方法的修饰符有哪些?各修饰符的功能是什么?是否可以混用?
      public 公共访问控制符。指定该方法为公共的,它可以被任何对象的方法访问
      private 私有访问控制符。指定该方法只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此方法
      protected 保护访问控制符。指定该方法可以被它的类及其子类访问
      friendly 默认的友元访问控制符,在同一个包中的其他类可以访问此方法,而其他包中的类不能访问该方法
      final 最终修饰符。指定该方法不能被重载
      static 静态修饰符。指定不需要实例化一个对象就可以激活的方法
      synchronized 同步修饰符。在多线程程序中,该修饰符用于在运行前,对它所属的方法加锁,以防止其他线程访问,运行结束后解锁
      native 本地修饰符。指定此方法的方法体是用其他语言(如C)在程序外部编写的
      允许private和protected组合在一起来修饰一个方法;其他修饰符都只有一个。当用两个以上的修饰符来修饰一个方法时,需要注意,有的修饰符之间是互斥的。
    4. 成员变量和局部变量的区别有哪些?
      (1)从语法形式上看,成员变量是属于类的,而局部变量是在方法中定义的变量或方法的参数;成员变量可以被public、private、static等修饰符所修饰,而局部变量则不能被访问控制修饰符及static所修饰;成员变量和局部变量都可以被final所修饰。
      (2)从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在于堆内存,而局部变量是存在于栈内存的。
      (3)从变量在内存中的生存时间上看,成员变量是对象的一部分,它随对象的创建而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。
      (4)成员变量如果没有被赋初值,则会自动以类型的默认值赋值(有一种情况例外,被final修饰但没有被static修饰的成员变量必须显示地赋值);而局部变量则不会自动赋值,必须显示赋值后才能使用。
    5. 创建一个对象使用什么运算符?对象实体与对象的引用有何不同?
      利用new运算符创建新的对象,并指派给前面所创建的变量。
      引用变量是指向由类创建的对象的实体,所以可将它视为“对象的名称”,因而简称对象。事实上,对象的引用是指向对象实体的变量,而非变量本身。
    6. 对象的成员如何表示?
    <对象名>.<对象成员>
    
    1. 在成员变量或成员方法前加上关键字“this”表示什么含义?
      如果要强调是“对象本身的成员”的话,则可以在成员名前面加this关键字,即“this.成员名”。此时this即代表调用此成员的对象。
    2. 什么是方法的返回值,返回值在类的方法里的作用是什么?
      一个方法如果没有返回值,则在该方法的前面用void来修饰;如果返回值的类型为简单数据类型,只需在声明方法的前面加上相应的数据类型即可;同理,若需方法返回一个数组,则必须在该方法的前面加上数组类型的修饰符。
    3. 在方法调用中,使用对象作为参数进行传递时,是“传值” 还是“传址”,对象作参数起到什么作用?
      当参数是基本数据类型时,则是传值方式调用,而当参数是引用类型的变量时,则是传址方式调用。
    4. 什么叫匿名对象?一般在什么情况下使用匿名对象?
      当一个对象被创建之后,在调用该对象的方法时,也可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象。
      使用匿名对象通常有如下两种情况:
      (1)如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
      (2)将匿名对象作为实参传递给一个方法调用。
    5. 定义一个“student”类,包含的内容有:
      成员变量:学号,姓名,性别,班干部否,数学,语文,外语
      成员方法:输入,总分,平均分
      编程实现这个类,并调用相应的方法输入数据,计算总分和平均分。
    import java.io.*;
    
    public class exe6_13 {
    	public static void main(String args[]) {
    		Student mStudent = new Student();
    		mStudent.input();
    		System.out.println("total score = " + mStudent.totalScore());
    		System.out.println("average score = " + mStudent.averageScore());
    	}
    }
    
    class Student {
    	long student_id;
    	String name;
    	String sex;
    	boolean isClassCadre;
    	int maths_score;
    	int chinese_score;
    	int english_score;
    	
    	String str;
    	
    	void input() {
    		BufferedReader buf;
    		buf = new BufferedReader(new InputStreamReader(System.in));
    		
    		System.out.println("please input the student id:");
    		try {
    			str = buf.readLine();
    			student_id = Long.parseLong(str);
    		} catch(IOException e1) {
    			student_id = 0;
    		}
    		
    		System.out.println("please input the student name:");
    		try {
    			str = buf.readLine();
    			name = str;
    		} catch(IOException e1) {
    			name = "known";
    		}
    		
    		System.out.println("please input the sex:");
    		try {
    			str = buf.readLine();
    			sex = str;
    		} catch(IOException e1) {
    			sex = "known";
    		}
    		
    		System.out.println("please input is class cadre:");
    		try {
    			str = buf.readLine();
    			isClassCadre = Boolean.parseBoolean(str);
    		} catch(IOException e1) {
    			isClassCadre = false;
    		}
    		
    		System.out.println("please input the score of maths:");
    		try {
    			str = buf.readLine();
    			maths_score = Integer.parseInt(str);
    		} catch(IOException e1) {
    			maths_score = 0;
    		}
    		
    		System.out.println("please input the score of chinese:");
    		try {
    			str = buf.readLine();
    			chinese_score = Integer.parseInt(str);
    		} catch(IOException e1) {
    			chinese_score = 0;
    		}
    		
    		System.out.println("please input the score of english:");
    		try {
    			str = buf.readLine();
    			english_score = Integer.parseInt(str);
    		} catch(IOException e1) {
    			english_score = 0;
    		}
    	}
    	
    	double totalScore() {
    		return maths_score + chinese_score + english_score;
    	}
    	
    	double averageScore() {
    		return (double)(maths_score + chinese_score + english_score) / 3;
    	}
    }
    
    1. 以二维数组为参数进行方法调用,计算二维数组各列元素之和,并返回所计算的结果。
    import java.io.*;
    import java.util.Arrays;
    
    public class exe6_14 {
    	public static void main(String args[]) {
    		int a[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
    		Colume mColume = new Colume();
    		int[] result = mColume.add(a);
    		System.out.println("result = " + Arrays.toString(result));
    	}
    }
    
    class Colume {
    	int[] add(int array[][]) {
    		int[] result = new int[array[0].length];
    		for (int i = 0; i < array.length; i++) {
    			for (int j = 0; j < array[i].length; j++) {
    				result[j] += array[i][j];
    			}
    		}
    		return result;
    	}
    }
    

    注:练习均为博主自己编写,不是标准答案,可能存在问题,可以留言讨论。

    展开全文
  • 11.5.2 为Vector重载算术运算符 11.5.3 对实现的说明 11.5.4 使用Vector来模拟随机漫步 11.6 的自动转换和强制类型转换 11.6.1 转换函数 11.6.2 转换函数和友元函数 11.7 总结 11.8 复习题 11.9 编程...
  • 解析XML文档有哪几种方式? 117 七. 流行的框架与新技术 117 1、谈谈你对Struts的理解。 117 2、谈谈你对Hibernate的理解。 118 3、AOP的作用。 118 4、你对Spring的理解。 118 5、谈谈Struts中的Action servlet。 ...
  • C++面试常见问题

    2020-05-09 19:28:57
    有哪几种类型的作用域? 6 什么叫做可见性?可见性的一般规则是什么? 7 什么叫静态数据成员?他有何特点? 8 什么叫静态函数成员?他有何特点? 9 什么叫友元函数?什么叫友元? 10 在函数内部定义的普通局部变量...

    目录
    问答题
    1. 比较值传递和引用传递的相同点和不同点。
    2 什么叫内联函数?它有哪些特点?
    3 什么叫复制构造函数?复制构造函数何时被调用?
    4 复制构造函数与赋值运算符(=)有何不同?
    5 什么叫作用域?有哪几种类型的作用域?
    6 什么叫做可见性?可见性的一般规则是什么?
    7 什么叫静态数据成员?他有何特点?
    8 什么叫静态函数成员?他有何特点?
    9 什么叫友元函数?什么叫友元类?
    10 在函数内部定义的普通局部变量和静态局部变量在功能上有何不同?计算机底层对这两类变量做了怎样的不同处理导致了这种差异?
    11 引用和指针有何区别?何时只能使用指针而不能使用引用?
    12 比较类的 3 种继承方式之间的差别?
    13 什么叫虚基类?有何作用?
    14 组合与继承有什么共同点和差异?通过组合生成的类与被组合的类之间的逻辑关系是什 么?继承呢?
    15 基类与派生类的对象,指针或引用之间,哪些情况下可以隐含转换,哪些情况下可以显 示转换?在涉及多重继承或虚继承的情况下,在转换时会面临哪些新问题?
    16 什么叫做多态性?在 C++种是如何实现多态的?
    17 什么叫抽象类?抽象类有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?
    18 在 C++中,能否声明虚构造函数?为什么?能否声明虚析构函数?有何用途?
    19 什么叫做流?流的提取和插入是指什么?I/O 流在 C++中起着怎样的作用?
    20 什么叫做异常?什么叫做异常处理?
    21 C++的异常处理机制有何优点?
    22 比较函数重载和虚函数在概念和使用方式方面有什么区别?
    23 比较 class 和 struct 结构体的异同
    24 浅拷贝和深拷贝的区别?
    25 const 和 static 作用 const 作用:
    26 析构函数带 virtual 和 不带 virtual 的区别
    27 重写,重载和隐藏的区别?
    28 C++中的四个默认的函数
    29 不可以被重载的运算符--五个
    30 三种字符数组初始化的方法
    31 哪些操作符必须重载为成员函数
    32 什么是“else 摇摆问题”,举例说明
    33 函数模板和函数重载的区别与联系
    34 怎样区别虚函数和纯虚函数?两者都有什么作用
    35 面向对象程序“接口与实现方法分离”,有什么作用(好处)
    36 列出所有与字符串处理有关的头文件
    37 C++中显示类型转换
    38 delete 和 delete [] 的区别?
    39 存储类别说明符可划分为两类。
    40 什么是运算符重载,它如何增强 C++的扩展性?
    41 为什么说”继承是 C++面向对象的主要特征之一”?请简要说明.?
    42 作用域辨析有哪些?
    43.STL 是什么?组成部分和区别。
    44 如何声明和使用虚函数。说明它在多态性中的作用和意义。
    44.什么是逻辑错误?什么是语法错误?请举例说明。
    45 编写语句说明枚举类型是如何定义和使用的。
    46 ADT是什么?简述你对“数据抽象”和“信息隐藏”的认识。
    47 简述你对“面向对象”和“面向过程”编程思想的理解和认识。
    50 写出递归函数定义以及相应的优缺点
    51 写出包含输入输出的标准库
    52 怎样区别虚函数和纯虚函数?两者都有什么作用


    问答题
    1. 比较值传递和引用传递的相同点和不同点。
    值传递是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将 实参的值传递给形参)。这一过程是参数值的单向传递过程,一旦形参获得了值便与实参脱 离关系,此后无论形参发生了怎样的改变,都不会影响到实参。
    引用传递将引用作为形参,在执行主调函数中的调用语句时,系统自动用实参来初始化 形参。这样形参就成为实参的一个别名,对形参的任何操作也就直接作用于实参。

    2 什么叫内联函数?它有哪些特点?
    定义时使用关键字 inline 的函数叫做内联函数;编译器在编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销;
    内联函数体内不能有循环语句和 switch 语句;
    内联函数的定义必须出现在内联函数第一次被调用之前;对内联函数不能进行异常接口声明;

    3 什么叫复制构造函数?复制构造函数何时被调用?
    复制构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的 对象的引用 (const T &)。其作用是使用一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。
    (1) 当用类的一个对象去初始化该类的另一个对象时;
    (2) 如果函数的形参是类的对象,调用函数时进行形参和实参结合时;
    (3) 如果函数的返回值是类的对象,函数执行完成返回调用者时。

    4 复制构造函数与赋值运算符(=)有何不同?
    从概念上区分:复制构造函数是构造函数,而赋值操作符属于操作符重载范畴,它通常 是类的成员函数 从原型上来区分:
    复制构造函数原型 ClassType(const ClassType &);无返回值;
    赋值操作符原型 ClassType& operator=(const ClassType &);返回值为 ClassType 的引用,便于连续赋 值操作 从使用的场合来区分:复制构造函数用于产生对象,它用于以下几个地方:函数参数为 类的值类型时、函数返回值为类类型时以及初始化语句

    5 什么叫作用域?有哪几种类型的作用域?
    作用域讨论的是标识符的有效范围,作用域是一个标识符在程序正文中有效的区域。 C++的作用域分为:函数原型作用域、函数作用域、文件作用域(全局作用域)、块作用 域(局部作用域)、类作用域和名字空间作用域。

    6 什么叫做可见性?可见性的一般规则是什么?
    可见性是标识符是否可以引用的问题; 可见性的一般规则是:标识符要声明在前,引用在后,在同一作用域中,不能声明同名 的标识符。对于在不同的作用域声明的标识符,遵循的原则是:若有两个或多个具有包含关 系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见,如果内层声明了 同名标识符则外层标识符不可见。

    7 什么叫静态数据成员?他有何特点?
    类的静态数据成员是类的数据成员的一种特例,采用 static 关键字来声明。对于类的普
    通数据成员,每一个类的对象都拥有一个拷贝,就是说每一个对象的同名数据成员可以分别存储不同的值,这也是保证对象拥有区别于其他对象的特征的需要,但是静态数据成员,每 个类只要一个拷贝,由所有该类的对象共同维护和使用,这个共同维护,使用也就实现了同一类的不同对象之间的数据共享。

    8 什么叫静态函数成员?他有何特点?
    使用 static 关键字声明的函数成员是静态的,静态函数成员属于整个类,被同一个类的 所有对象共同维护,为这些所有对象共享。
    静态成员函数具有以下两个方面的好处:
    一是由于静态成员函数只能直接访问同一个类的静态数据成员,可以保证不会对该类的其余数据成员造成负面影响;
    二是同一个类只维护一个静态函数成员的拷贝,节约了系统的开销,提高 程序的运行效率。

    9 什么叫友元函数?什么叫友元类?
    友元函数是使用关键字 friend 关键字声明的函数,它可以访问相应类的保护成员和私 有成员。友元类是使用 friend 关键字声明的类,它的所有成员函数都是相应类的友元函数。
    友元不可继承,没有传递性。

    10 在函数内部定义的普通局部变量和静态局部变量在功能上有何不同?计算机底层对这两类变量做了怎样的不同处理导致了这种差异?
    局部作用域中静态变量的特点是:它并不会随着每次函数调用而产生一个副本,也不会 随着函数的返回而失效,定义时未指定初值的基本类型静态变量,会被以 0 值初始化;局部作用域的全部变量诞生于声明点,结束于声明所在的块执行完毕之时,并且不指定初值,意 味初值不确定。普通局部变量存放于栈区,超出作用域后,变量被撤销,其所占的内存也被 回收;静态局部变量存放于静态数据存储区,全局可见,但是作用域是局部作用域,超出作用域后变量仍然存在。

    11 引用和指针有何区别?何时只能使用指针而不能使用引用?
    引用是一个别名,不能为 NULL 值,不能被重新分配;
    指针是一个存放地址的变量。
    当需要对变量重新赋以另外的地址或赋值为 NULL 时只能使用指针。
    引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。

    12 比较类的 3 种继承方式之间的差别?
    公有继承,使得基类 public(公有)和 protected(保护)成员的访问属性在派生类中不变, 而基类 private(私有)成员不可访问。
    私有继承,使得基类 public(公有)和 protected(保护)成员都以 private(私有)成员身份出 现在派生类中,而基类 private(私有)成员不可访问。
    保护继承中,基类 public(公有)和 protected(保护)成员都以 protected(保护)成员身份出 现在派生类中,而基类 private(私有)成员不可访问。

    13 什么叫虚基类?有何作用?
    当某类的部分或全部直接基类是从另一个基类派生而来,这些直接基类中,从上一级基类继承来的成员就拥有相同的名称,派生类的对象的这些同名成员在内存中同时拥有多 个拷贝,我们可以使用作用域分辨符来唯一标识并分别访问它们。
    我们也可以将直接基类的共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只拥有一个拷 贝,这样就解决了同名成员的唯一标识问题。
    虚基类的声明是在派生类的定义过程,其语法格式为: class 派生类名:virtual 继承方式 基类名 上述语句声明基类为派生类的虚基类,在多继承情况下,虚基类关键字的作用范围和 继承方式关键字相同,只对紧跟其后的基类起作用。
    声明了虚基类之后,虚基类的成员在 进一步派生过程中,和派生类一起维护一个内存数据拷贝。 虚基类就是为了解决多继承产生的二义性问题

    14 组合与继承有什么共同点和差异?通过组合生成的类与被组合的类之间的逻辑关系是什 么?继承呢?
    组合和继承它们都使得已有对象成为新对象的一部分,从而达到代码复用的目的。组合 和继承其实反映了两种不同的对象关系。
    组合反映的是“有一个”(has-s)的关系,如果类 B 中存在一个类 A 的内嵌对象,表示的 是每一个 B 类型的对象都“有一个”A 类型的对象,A 类型的对象与 B 类型的对象是部分整体 的关系。
    继承反映的是“是一个”(is-a)的关系,在“是一个”关系中,如果类 A 是类 B 的公有基 类,那么这表示每一个 B 类型的对象都“是一个”A 类型的对象,B 类型的对象与 A 类型的对 象是特殊与一般的关系。

    15 基类与派生类的对象,指针或引用之间,哪些情况下可以隐含转换,哪些情况下可以显 示转换?在涉及多重继承或虚继承的情况下,在转换时会面临哪些新问题?
    派生类指针可以隐含转换为基类指针,而基类指针要想转换为派生类指针,则转换一定 要显示地进行。因为从特殊的指针转换到一般的指针时安全的,因此允许隐含转换;
    从一般 的指针转换到特殊的指针是不安全的,因此只能显示地转换。基类对象一般无法被显式转换 为派生类对象。在多重继承情况下,执行基类指针到派生类指针的显式转换时,有时需要将 指针所存储的地址值进行调整后才能得到新指针的值。
    但是,如果 A 类型是 B 类型的虚拟 基类,虽然 B 类型的指针可以隐含转换为 A 类型,但是 A 类型指针却无法通过 static_case 隐含转换为 B 类型的指针。

    16 什么叫做多态性?在 C++种是如何实现多态的?
    **多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员 函数的再抽象。**C++支持重载多态,强制多态,包含多态和参数多态。 在基类中声明相应的函数为 virtual 型,然后在派生类中实现该函数,这样就可以通过 基类指针调用派生类对象的函数,实现了运行时动态绑定,即多态的功能。

    17 什么叫抽象类?抽象类有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?
    带有纯虚函数的类是抽象类。其主要作用是通过它为一个类族建立一个公共的接口,使 他们能够更有效地发挥多态特性。抽象类声明了一个类族派生类的共同接口,而接口的完整 实现,即纯虚函数的函数体,要由派生类自己定义。抽象类派生出新的类之后,如果派生类 给出所有纯虚函数的函数实现,这个派生类就可以定义自己的对象,因而不再是抽象类;反 之,如果派生类没有给出全部纯虚函数的实现,此时的派生类仍然是一个抽象类。

    18 在 C++中,能否声明虚构造函数?为什么?能否声明虚析构函数?有何用途?
    在 C++中,不能声明虚构造函数,多态是不同的对象对同一消息有不同的行为特性,虚 函数作为运行过程中多态的基础,主要是针对对象的,而构造函数是在对象产生之前运行的, 因此虚构造函数是没有意义的;
    可以声明虚析构函数,析构函数的功能是在该类对象消亡之前进行一些必要的清理工作, 如果一个类的析构函数是虚函数,那么,由它派生而来的所有子类的析构函数也是虚函数。 析构函数设置为虚函数之后,在使用指针引用时可以动态联编,实现运行时的多态,保证使 用基类的指针就能够调用适当的析构函数针对不同的对象进行清理工作。

    19 什么叫做流?流的提取和插入是指什么?I/O 流在 C++中起着怎样的作用?
    流是一种抽象,它 负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流 动,一般意义下的读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中) 插入。
    操作系统是将键盘、屏幕、打印机和通信端口作为扩充文件来处理的,I/O 流类就是 用来与这些扩充文件进行交互,实现数据的输入与输出。

    20 什么叫做异常?什么叫做异常处理?
    当一个函数在执行的过程中出现了一些不平常的情况,或运行结果无法定义的情况,使 得操作不得不被中断时,我们说出现了异常。异常通常是用 throw 关键字产生的一个对象, 用来表明出现了一些意外的情况。我们在设计程序时,就要充分考虑到各种意外情况,并给 与恰当的处理。这就是我们所说的异常处理。

    21 C++的异常处理机制有何优点?
    C++的异常处理机制使得异常的引发和处理不必在同一函数中,这样底层的函数可以着 重解决具体问题,而不必过多地考虑对异常的处理。上层调用者可以在适当的位置设计对不 同类型异常的处理。

    22 比较函数重载和虚函数在概念和使用方式方面有什么区别?
    函数重载可以用于普通函数(非成员的函数)和类的成员函数,而虚函数只能用于 类的成员函数。
    函数重载可以用于构造函数,而虚函数不能用于构造函数。
    如果对成员函数进行重载,则重载的函数与被重载的函数应当都是同一类中的成员 函数,不能分属于两个不同继承层次的类。函数重载是横向的重载。虚函数是对同 一类族中的基类和派生类的同名函数的处理,即允许在派生类中对基类的成员函数 重新定义。虚函数的作用是处理纵向的同名函数。
    重载的函数必须具有相同的函数名,但函数的参数个数和参数类型二者中至少有一 样不同,否则在编译时无法区分它们。而虚函数则要求再同一类族中的所有虚函数 不仅函数名相同,而且要求函数类型、函数的参数个数和参数类型都全部相同,否 则就不是重定义了。也就不是虚函数了。
    函数重载是在程序编译阶段确定操作的对象的,属静态关联。虚函数是在程序运行 阶段确定操作的对象的,属动态关联。
    23 比较 class 和 struct 结构体的异同
    不同之处:

    默认成员访问权限不同,struct 默认是 public,而 class 默认是 private。
    默认继承方式不同,struct 默认是 public,而 class 默认是 private。
    在定义模板参数时可以用 class 但不能用 struct。 相同之处在于:都可以包含成员函数,都可以实现继承,都可以实现多态。
    24 浅拷贝和深拷贝的区别?
    在某些情况下,类内的成员变量需要动态开辟堆内存,如果实行按位拷贝,就可能会出 现两个对象里面的成员变量指针指向同一块内存区域。当回收其中一个对象时,该对象成员 变量所指向的内存区域也将回收,会导致另一个对象存在野指针的情况。非常危险。 深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程 的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。

    25 const 和 static 作用 const 作用:
    const:

    定义 const 常量,具有不可变性,保护被修饰的东西。防止意外修改,增强程序的 健壮性。
    便于类型检查,使编译器对处理内容有更多的了解。
    可以避免意义模糊的数字出现,也便于进行参数的修改。同宏定义一样,可以做到 不变则以,一变都变。
    const 定义的常量在程序运行过程中只有一份拷贝,而宏定义却又若干份拷贝。
    static:

    作为类的静态数据成员:被类的所有对象共同拥有,在内存中只有一份拷贝。在类 内声明,在类外初始化。
    在全局变量前加上 static 关键字,该变量被定义为一个全局变量,
    特点:
    a) 变量在全局数据区分配内存
    b) 如果不显示初始化,则隐式的初始化为 0
    c) 作用域仅限于本文件内
    在局部变量前加 static 关键字,该变量被定义为静态局部变量,
    特点:
    a) 在全局数据区分配内存
    b) 如果不显示初始化,则隐式的初始化为 0
    c) 始终驻留在全局数据区,直到程序结束。作用域仅限于函数体内,当函数执行 完后作用域随之消失。
    静态函数,
    特点:
    a) 静态函数只能在本源文件中使用
    b) 在文件作用域下声明的 inline 函数默认是 static 的
    26 析构函数带 virtual 和 不带 virtual 的区别
    如果基类要被派生,则析构函数一定要带 virtual。否则,通过基类指针指向派生类对象 后,删除该指针时并不会释放派生类对象的空间。也即,不会调用派生类的析构函数。

    不带 virtual 的几种情况:

    作为非公有基类
    不作为接口使用的基类
    可以保证这个类不被 public 继承
    如果他的所有派生类的 virtual 函数都是什么都不做
    如果不需要基类指针指向派生类对象
    27 重写,重载和隐藏的区别?
    重载:在一个类中的同名函数,但参数列表不同,函数的返回值相同。
    隐藏:派生类的函数屏蔽了与其同名的父类函数
    重写(覆盖):父类和子类存在相同的函数,包括返回值,参数列表均相同,父类的该 函数必须含有 virtual 关键字。

    28 C++中的四个默认的函数
    构造函数:先基类后派生类
    拷贝函数:对象被创建时调用
    调用拷贝构造函数的情况:
    a) 一个对象以值传递的方式传入函数体
    b) 一个对象以值传递的方式从函数返回
    c) 一个对象需要通过另外一个对象初始化
    析构函数:每个类只有一个析构函数,
    赋值函数:
    29 不可以被重载的运算符–五个
    类属关系运算符、成员指针运算符“、作用域运算符、 sizeof 运算符和三目 运算符
    . .* :: sizeof() ?:

    30 三种字符数组初始化的方法
    char str[5] = {“hello”};
    char str[6] = {‘a’,‘b’,‘c’,‘d’,‘e’,’\0’};
    char str[] = “abcde”;

    31 哪些操作符必须重载为成员函数
    必须重载:
    = -> () [] new delete

    32 什么是“else 摇摆问题”,举例说明
    C++编译器总是把 else 同与它最近的 if 联系起来,因此如果没有正确放置花括号对就 会出现逻辑错误。

    33 函数模板和函数重载的区别与联系
    函数重载:C++允许使用同一个函数名,不同的参数个数和参数类型来定义多个函数。 重载函数的参数个数,类型,顺序至少有一个不同。返回值可以相同,也可以不同。

    函数模板:是对一类同构函数的抽象定义,并不是具体的函数,函数模板的定义被编译 时不会产生任何可执行的代码。 联系: 针对不同类型的数据,但实现相同功能的函数重载可以通过函数模板来替代。

    34 怎样区别虚函数和纯虚函数?两者都有什么作用
    纯虚函数是在基类中声明的虚函数,在基类中没有定义。在基类中实现纯虚函数的方法 是在函数原型后加“=0。虚函数可以实现也可以不实现。
    定义纯虚函数是为了实现一个接口,起到了一个规范的作用。规范继承这个类的程序员 必须实现这个接口。
    声明了纯虚函数的类为抽象类,不能实例化对象。 定义虚函数是为了允许用基类的指针来调用子类的这个函数。
    抽象类的作用:将有关的操作作为一个接口组织在一个继承层次结构中,由他来为派生 类提供一个公共的根。派生类将具体实现在其基类中作为接口的操作。

    35 面向对象程序“接口与实现方法分离”,有什么作用(好处)
    接口与实现分离技术可以只把接口暴露给用户,具体的实现细节隐藏起来,当需要改动 代码时,只要在实现部分修改后编译,用户无需再编译自己的项目。

    36 列出所有与字符串处理有关的头文件
    string.h 是 C 语言中字符串操作函数的头文件
    cstring 是 c++对 C 语言中的 strcpy 之类的函数申明,包含 cstring 之后,就可以在程序 中使用 C 语言风格的 strcpy 之类的函数。
    string 是 c++语言中 string 类模板的申明
    CString 是 MFC 中定义的字符串类,MFC 中很多类及函数都是以 CString 为参数的

    37 C++中显示类型转换
    static_cast:最常用的类型转换,提供基本数据类型之间的转换操作。
    const_cast:可以把 const 类型的指针转换为非 const 类型的指针。
    reinterpret_cast:解释的意思,主要用于不相关类型之间的转换。目标和原始值之 间至少有相同的位数,我们可以将转换之后的值再转换回去,而不像其它 3 种类型 可能会导致精度丢失
    dynamic_cast:运行时检查该转换是否类型安全,但只有在多态类型时合法,主要 用于类层次间的上行和下行转换,还可以用于类之间的交叉转换。在进行类层次间 的上行转换时和 static_cast 效果一样,进行下行转换时,具有类型检查的功能,比 static_cast 更安全。
    38 delete 和 delete [] 的区别?
    delete ptr 代表用来释放内存,且只用来释放 ptr 指向的内存。
    delete[] rg 用来释放 rg 指向的内存!!还逐一调用数组中每个对象的析构函数 对于像 int/char/long/int*/struct 等等简单数据类型,由于对象没有 destructor,所以用 delete 和 delete [] 是一样的!但是如果是 C++对象数组就不同了!

    39 存储类别说明符可划分为两类。
    静态存储类别(static,extern)和自动存储类别(auto, register)。这样的变量在程序执行进入到定义它们的程序块时创建,在程序块激活时存在, 在程序块退出时销毁。

    40 什么是运算符重载,它如何增强 C++的扩展性?
    运算符重载是对已有的运算符赋予多重含义,使得同一个运算符作用于不同类型的数据 时导致不同的行为。 运算符重载的本质是函数重载,可以改变现有运算符的操作方式,以适用于类类型,为 类的用户提供了一个直接的接口,使得用户程序所用的语言是面向问题的,而不是面向机器的,增强了 C++的扩展性。

    41 为什么说”继承是 C++面向对象的主要特征之一”?请简要说明.?
    继承是一种联结类的层次模型,层次结构的上层是最具有通用性的,而下层的部分,即 后代具有特殊性。类可以从他的祖先那里继承方法和成员变量,也可以增加新的方法是适用 于特殊的需要。如果没有继承,类就缺失了一块层次结构,代码重用和数据共享就贯彻不到 底,有了继承,就会有抽象编程中的多态问题,只有从机制内部真正解决了多态表现问题, 对象的数据封装,信息隐藏,代码重用等招式才能淋漓尽致的发挥出来。才称得上真正的面 向对象编程。

    42 作用域辨析有哪些?
    类作用域: 在类的作用域内,类的成员可以被类的所有成员函数直接访问,在类的作用域之外, public 类成员通过对象的句柄之一而引用。句柄可以是对象名称,对象的引用,对象的指针。 对象,引用或指针指定了客户可访问的接口。
    全局名字空间作用域: 声明与任何函数或者类之外的标识符具有全局名字空间作用域,这种标识符对于从其声 明处开始直到文件结尾处为止出现的所有函数都是已知的,即可访问的。位于函数之外的全局变量。函数定义和函数原型都属于该作用域。
    函数作用域: 标签是唯一具有函数作用域的标识符,标签可以在函数中的任何地方使用,但是不能在 函数体外被引用。
    局部作用域: 在一个语句块中声明的作用域,开始于标识符的声明出,结束于标识符声明处所在语句 块的结束右花括号处。局部变量具有局部作用域,函数形参也是函数的局部作用域。当语句 块是嵌套的,并且外层语句块的一个标识符和内层语句块的一个标识符具有相同的名字时, 外层的标识符处于隐藏状态,直到内存的语句块执行结束为止。
    函数原型作用域: 函数原型形参列表中的标识符,在一个函数原型中,一个特定的标识符只能使用一次。
    43.STL 是什么?组成部分和区别。
    STL 是 c++提供的标准模板库。
    STL 的主要组成部分为:容器、迭代器、算法、函数对象和适配器。其中算法处于核心 地位,迭代器如同算法和容器之间的桥梁,算法通过迭代器从容器中获取元素,然后将获取 的元素传递给特定的函数对象的操作,最后将处理后的结果存储到容器中。

    44 如何声明和使用虚函数。说明它在多态性中的作用和意义。
    声明:在基类中声明成员函数时在前面加上关键字 virtual 。
    使用虚函数:在基类中将成员函数声明为虚函数,这样在派生类中重写该方法后,在使 用基类的指针或引用指向派生类对象时,就可以通过这个基类指针或引用访问到派生类的方法。

    C++中的多态可分为四类:重载多态、强制多态、包含多态和参数多态,其中包含多态 是研究类族中定义于不同类中的同名函数的多态行为,主要通过虚函数来实现。多态使得接 口与实现得到分离,要利用统一接口实现运行时多态一般需要动态绑定,而虚函数是动态绑 定的基础,就使得虚函数在多态中很重要。

    多态指同样的消息被不同类型的对象接收时导致不同的行为。 虚函数机理:当编译器看到 fn 的虚函数标志时,会记下,等遇到这个虚函数的调用时,将 该捆绑操作滞后到运行中,以实际的对象来捆绑其对应的成员函数操作,编译器在捆绑操作 b.fn()处避开函数调用,只作一个指向实际对象成员函数的间接访问,每个实际的对象都需 额外占有一个指针空间,以指向类中的虚函数表。

    44.什么是逻辑错误?什么是语法错误?请举例说明。
    逻辑错误:由于程序设计人员设计的算法有错或编写的程序有错,此时程序一般能够正 常运行,但是通知给系统的指令与解题的原意不相同,即出现了逻辑上的混乱。 例如:int a[5] = { 1 , 2 , 3 , 4 , 5} ; for( int i = 0 ; i <= 0 ; i ++ ) cout << a[i] << endl ; //发生数组越界

    语法错误:违背了 C++语言的规定,不能生成可执行文件,主要是语句的结构或拼写中 存在的错误。 例如:for( int i = 0 , i < 10 , i ++) { } //应该用“;

    45 编写语句说明枚举类型是如何定义和使用的。
    枚举类型的声明形式如下 enum 枚举类型名 { 变量值列表 } ;

    例如: enum weekday{ sun , mon , tue , wed , thu , fri , sta } ; 变量定义:enum weekday a , b , c = tue ; //也可以省略 enum

    枚举元素具有默认值,他们依次是:0 , 1 , 2 , … , 例子中:sun 的值为 0 , mon 的值 为 1,tue 的值为 2,… ,sta 的值为 6 。
    枚举元素按常量处理,不能进行赋值。
    整数值也不能赋给枚举变量,如确实需要可进行强制类型转换。
    枚举变量可以进行关系运算。
    46 ADT是什么?简述你对“数据抽象”和“信息隐藏”的认识。
    C++内部的数据类型包括基本类型和复合类型(数组、字符串、指针和结构),有表示 范围,只是用可以接受的方式表示实际概念。确定了一个类型就确定了计算机存储给类型所 需要的容量,确定了其表示范围,也确定了对该类型可以进行的操作。

    抽象数据类型(Abstract Data Type),简称 ADT,是指一个数学模型以及定义在该模型 上的一组操作。 通常以以下格式定义: ADT 抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> }

    数据抽象:对具体事物描述的一个概括。通过数据抽象可以将数据类型的定义和它的实 现分开,使得只研究和使用它的结构而不用考虑它的实现细节成为可能。C++中的类就是一 种数据抽象,类是具有相同属性和服务的一组对象的集合。

    信息隐藏:C++中的封装就是信息隐藏的一种,即尽可能的隐藏对象的内部细节,对外 形成一个边界,只保留有限的对外接口使之与外部反生关系。

    47 简述你对“面向对象”和“面向过程”编程思想的理解和认识。
    “面向过程”是一种以事件为中心的编程思想,就是分析出解决问题所需要的步骤,然后 用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。过程化编程强调 功能,以过程模块为中心,分层逐步展开设计。通常采用结构化程序设计,基本思路为:自 顶向下、逐步求精。

    “面向对象”的编程思想就是把你需要解决的问题中的所有具体的东西,都看成一个个具 有属性和行为的对象,然后把所有具有相同性质的对象抽象成类,那些与问题无关的对象则 忽略。对象化编程强调分离抽象层次,以便让程序员分工,关心不同抽象层次中的细节,而 不用去关心不同抽象层次的联系,数据安全而隐蔽,不同抽象层次的职责分明。

    50 写出递归函数定义以及相应的优缺点
    递归函数是直接或间接地(通过另一个函数)调用自己。

    优点:
    结构清晰,可读性强,使程序易于理解和调试。

    缺点

    效率较低。递归是有时间和空间消耗的。另外,递归有可能很多计算都是重复的,从而给性能带来很大的负面影响。因为递归的本质是把一个问题分解成连个或者多个小问题。如果多个小问题存在相互重叠的部分,那么就存在重复的计算。

    可能导致调用栈溢出。每一次函数调用在内存栈中分配空间,而每个进程的栈的容量是有限的。当递归调用的层级太多时,就会超出栈的容量,从而导致栈溢出。

    51 写出包含输入输出的标准库
    <fstream>
    <iomanip>
    <ios>
    <iosfwd>
    <iostream>
    <ostream>
    <istream>
    <sstream>
    <streambuf>
    52 怎样区别虚函数和纯虚函数?两者都有什么作用
    虛函數介紹

    虚函数,在类成员方法的声明(不是定义)语句前加“virtual”, 如 virtual void func()
    纯虚函数,在虚函数后加“=0”,如 virtual void func()=0
    对于虚函数,子类可以(也可以不)重新定义基类的虚函数,该行为称之为复写Override。
    对于纯虚函数,子类必须提供纯虚函数的个性化实现。
    在派生子类中对虚函数和纯虚函数的个性化实现,都体现了“多态”特性。但区别是:

    子类如果不提供虚函数的实现,将会自动调用基类的缺省虚函数实现,作为备选方案;
    子类如果不提供纯虚函数的实现,编译将会失败。尽管在基类中可以给出纯虚函数的实现,但无法通过指向子类对象的基类类型指针来调用该纯虚函数,也即不能作为子类相应纯虚函数的备选方案。(纯虚函数在基类中的实现跟多态性无关,它只是提供了一种语法上的便利,在变化多端的应用场景中留有后路。)
    虚函数:当使用类的指针调用成员函数时,普通函数由指针类型决定,而虚函数由指针指向的实际类型决定。所以虚函数的调用时由指针所指向内存块的具体类型决定的。

    纯虚函数:纯虚函数是在基类中声明的虚函数,它要求任何派生类都要定义自己的实现方法,以实现多态性。实现了纯虚函数的子类,该纯虚函数在子类中就变成了虚函数。

    定义纯虚函数是为了实现一个接口,用来规范派生类的行为,也即规范继承这个类的程序员必须实现这个函数。派生类仅仅只是继承函数的接口。纯虚函数的意义在于,让所有的类对象(主要是派生类对象)都可以执行纯虚函数的动作,但基类无法为纯虚函数提供一个合理的缺省实现。所以类纯虚函数的声明就是在告诉子类的设计者,“你必须提供一个纯虚函数的实现,但我不知道你会怎样实现它”。

    含有纯虚函数的类称之为抽象类,它不能生成对象(创建实例),只能创建它的派生类的实例。抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层。抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作。

    抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类中没有重新定义纯虚函数,而只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体的类。
     

    展开全文
  • C/C++面试题收集

    2011-03-14 22:06:00
    1、有哪几种情况只能用intializationlist而不能用assignment?答案:当中含有const、reference(引用) 成员变量;基类的构造函数都需要初始化表。 2、main函数执行以前,还会执行什么代码?答案:全局对象的构造...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,视图如何表示中的继承与聚合? 82.客户端...
  • 面试题42 C#运算符与is运算符有什么作用 3.5 时间操作 面试题43 C#中如何利用DateTime获取季度 面试题44 如何在DateTime时间追加工作日 面试题45 如何进行DateTime时间与字符串时间之间的转换 3.6 小结 第4章 面向...
  • 新手学习C++入门资料

    2008-12-28 23:58:50
    输入和输出是通过C++来实现的,cin和cout是这些的实例,他们是在C++语言的外部实现。 在C++语言中,了一种新的注释方法,就是‘//’,在该行//后的所有说明都被编译器认为是注释,这种注释不能换行。C++中...
  • java 面试题 总结

    2009-09-16 08:45:34
    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以种类型的数据结构存储,当引用类型和原始类型用作某个的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  • 面试题28:C++的引用和C语言的指针什么区别 第4章 预处理、保留字 4.1 预处理 面试题1:简述#ifdef、#else、#endif和#ifndef的作用 面试题2:宏定义和函数 面试题3:用#define声明一个常数 面试题4:写一个“标准...
  • Java程序员面试宝典pdf

    热门讨论 2013-02-21 13:06:13
    面试题135 Struts提供了哪几类Action 239 13.2 Hibernate 240 面试题136 什么是对象关系映射模型(ORM) 240 面试题137 Hibernate的基本使用思想是什么 242 面试题138 Hibernate的实体存在哪几种状态 244 面试题139 ...
  • 面试题135 Struts提供了哪几类Action 239 13.2 Hibernate 240 面试题136 什么是对象关系映射模型(ORM) 240 面试题137 Hibernate的基本使用思想是什么 242 面试题138 Hibernate的实体存在哪几种状态 244 面试...
  • flash shiti

    2014-03-14 10:32:41
    40.Number将参数转换成数值其返回值有哪几种情况? A. 如果X为一数字,则返回值即为该数字; B. 如果X为一布尔数,则返回0或1; C. 如果X为一字符串,则函数将X解释为一个指数形式的十进制数; D. 如果X未定义,...
  • C++中有哪几种注释的方法?他们之间有什么区别? 解: 注释在程序中的作用是对程序进行注解和说明,以便于阅读。编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。而且由于...
  • c#学习笔记.txt

    2008-12-15 14:01:21
    另外我发现论坛上学习Java的人都非常的个性,当人问起学习种语言更好时,他会打出百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我...
  • 然而,结构在个重要方面不同于:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。 12.概述.NET里对 remoting 和 ...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    我们开发的俄罗斯方块游戏,主要实现了以下种功能: 1.可以灵活控制方块在图形框中运动。 2.游戏过程中方块可以自由旋转。 3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以...
  • 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并...
  • o 5.7 C ``按引用传递" 吗? o 5.8 我看到了用指针调用函数的不同语法形式。到底怎么回事? o 5.9 我怎样把一个 int 变量转换为 char * 型?我试了类型转换, 但是不行。 * 6. 空 (null) 指针 o 6.1 ...
  • 实例010 为项目添加已有类 实例011 为项目添加第三方控件 实例012 为项目添加已窗体 第2章 C#语言基础应用 2.1 代码的注释 实例013 对单行代码进行注释 实例014 快速对多行代码进行注释 实例015 使用“///...
  • 实例010 为项目添加已有类 实例011 为项目添加第三方控件 实例012 为项目添加已窗体 第2章 C#语言基础应用 2.1 代码的注释 实例013 对单行代码进行注释 实例014 快速对多行代码进行注释 实例015 使用“///...
  • 实例010 为项目添加已有类 实例011 为项目添加第三方控件 实例012 为项目添加已窗体 第2章 C#语言基础应用 2.1 代码的注释 实例013 对单行代码进行注释 实例014 快速对多行代码进行注释 实例015 使用“///...
  •  实例010 为项目添加已有类 11  实例011 为项目添加第三方控件 12 实例012 为项目添加已窗体 13 第2章 C#语言基础应用 15 2.1 代码的注释 16  实例013 对单行代码进行注释 16  实例014 快速对多行...
  • 实例010 为项目添加已有类 12 实例011 为项目添加第三方控件 13 实例012 为项目添加已窗体 14 第2章 C#语言基础应用 15 2.1 代码的注释 16 实例013 对单行代码进行注释 16 实例014 快速对多行代码进行注释 17 ...
  • 7.11.1 所有验证控件必须设置一属性来指定验证对象 194 7.11.2 验证控件的display属性值static和dynamic区别 194 7.11.3 是否可以通过编程方式来检验控件 194 7.12 精彩回顾 194 第8章 学富五车——...
  • 7.11.1 所有验证控件必须设置一属性来指定验证对象 194 7.11.2 验证控件的display属性值static和dynamic区别 194 7.11.3 是否可以通过编程方式来检验控件 194 7.12 精彩回顾 194 第8章 学富五车——...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

引用运算符有哪几类