C++编程基础与面向对象特性解析

需积分: 34 3 下载量 32 浏览量 更新于2024-07-29 收藏 5.71MB PDF 举报
"C++开发技术" C++是一种通用的编程语言,它继承了C语言的高效性和灵活性,并引入了面向对象编程的概念。本资源主要涵盖了C++的基础知识、面向过程和面向对象的程序设计,以及一些高级特性。 1. C++的基础知识包括作用域规则,如public、private、protected以及不写时的默认作用域(friendly)。public成员对所有类的实例可见,private成员仅在类内部可见,protected成员对类及其子类可见,而friendly则在同包内可见。了解这些权限修饰符有助于控制类的封装性。 2. 匿名内部类是一种没有名字的内部类,它可以实现接口但不能继承其他类。内部类可以访问外部类的私有成员,增加了代码的复杂性和灵活性。 3. 静态嵌套类(Static Nested Class)与普通内部类(Inner Class)的主要区别在于,静态内部类不需要外部类的对象就可以实例化,而普通内部类需要外部类对象。此外,静态内部类不能直接访问外部类的非静态成员。 4. &和&&是C++中的两个不同的运算符。&是位运算符,用于进行按位与操作,而&&是逻辑运算符,用于逻辑与判断,只有当两边的操作数都为真时结果才为真。在条件表达式中,&&具有短路特性,即如果左侧表达式为假,它将不再评估右侧。 5. Collection和Collections是Java集合框架的一部分。Collection是所有集合接口的超接口,比如Set和List。Collections则是提供了对集合进行操作的静态方法,如排序、查找和同步控制等。 6. assert语句用于调试,它在程序中插入一个断言,当断言的布尔表达式为假时,系统会抛出AssertionError。在开发和测试阶段启用assert,以确保程序的基本正确性,而在发布时通常关闭assert。 7. `String s = new String("xyz");` 创建了两个对象,一个是字符数组对象,另一个是引用对象。而`Math.round()`方法用于将浮点数四舍五入为最接近的整数,`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 8. 在C++中,short类型的变量与int类型进行运算时,结果会自动提升为int类型,因此`short s1 = 1; s1 = s1 + 1;`需要显式转换。但是,使用`s1 += 1;`时,编译器会自动处理类型转换。 9. Java中没有goto语句,这有助于避免复杂的控制流,使代码更易于理解和维护。 10. 数组没有length()方法,但有一个length属性来获取长度。而String类有length()方法,用于获取字符串的字符数量。 11. 方法的重载(Overloading)是指在同一个类中可以有多个同名方法,但参数列表不同。重写(Overriding)是指子类重新定义父类的同名方法。重载方法可以改变返回值类型,但重写方法的返回类型必须与被重写方法相同。 12. 在Set中,使用iterator()来遍历并检查元素是否存在重复。equals()用于判断两个对象的内容是否相等,而`==`则判断引用是否指向同一个对象。 13. 常见的运行时异常包括NullPointerException、ArrayIndexOutOfBoundsException等。运行时异常通常需要程序员在编写代码时处理。 14. error和exception的区别在于,error通常表示系统级问题,难以恢复,如内存溢出;而exception是程序设计或实现的问题,可以被捕获并处理。 15. List、Set是Collection的子接口,而Map不是。Map接口代表键值对的存储结构,不直接继承Collection接口。 16. abstract class用于声明抽象方法,不能实例化。interface只包含抽象方法和常量,实现接口的类必须提供所有接口方法的实现。抽象类可以有构造函数,可以实现接口,但接口不能继承类,只能继承其他接口。 17. abstract方法不能是static、native或synchronized,因为它们与抽象类和接口的设计目标不兼容。 18. 接口可以继承其他接口,抽象类可以实现接口,但不能继承实体类(concrete class),除非实体类有公有的无参构造函数。 19. 构造器Constructor不能被重写(Overriding),但可以被重载(Overloading)。 20. 不可以继承String类,因为String是final的。 21. try-finally块中的finally代码总是会被执行,无论try块中是否有return语句。finally中的代码通常用于清理资源,如关闭文件流等。 22. C++程序设计涵盖了从基础语法、数据类型、流程控制,到类和对象、继承、多态性、输入输出流等高级主题,是学习C++编程的重要参考。通过阅读和实践,开发者可以深入理解C++的核心概念和技术。