马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
欢迎关注 0voice · GitHub 6、 C++ 和 Java 区别(语⾔特性,垃圾回收,应⽤场景等) 指针: Java 语⾔让程序员没法找到指针来直接访问内存,没有指针的概念,并有内存的⾃动管理功能,从⽽有用的 防⽌了 C++ 语⾔中的指针操作失误的影响。但并⾮ Java 中没有指针, Java 虚拟机内部中照旧⽤了指针,包管了 Java 程序的安全。 多᯿继承: C++ ⽀持多᯿继承但 Java 不⽀持,但⽀持⼀个类继承多个接⼝,实现 C++ 中多᯿继承的功能,⼜避免 了 C++ 的多᯿继承带来的未便。 数据类型和类: Java 是完全⾯向对象的语⾔,全部的函数和变ᰁ必须是类的⼀部分。除了基本数据类型之外,别的 的都作为类对象,对象将数据和⽅法结合起来,把它们封装在类中,如许每个对象都可以实现⾃⼰的特点和⾏为。 Java 中取消了 C++ 中的 struct 和 union 。 ⾃动内存管理: Java 程序中全部对象都是⽤ new 操作符建⽴在内存堆栈上, Java ⾃动进⾏⽆⽤内存回收操作,不 需要程序员进⾏⼿动删除。⽽ C++ 中必须由程序员释放内存资源,增长了程序设计者的负担。 Java 中当⼀个对象 不再被⽤到时, ⽆⽤内存回收器将给他们加上标签。 Java ⾥⽆⽤内存回收程序是以线程⽅式在后台运⾏的,利⽤ 空闲时间⼯作来删除。 Java 不⽀持操作符᯿载。操作符᯿载被认为是 C++ 的突出特性。 Java 不⽀持预处理惩罚功能。 C++ 在编译过程中都有⼀个预编译阶段, Java 没有预处理惩罚器,但它提供了 import 与 C++ 预处理惩罚用具有雷同功能。 类型转换: C++ 中有数据类型隐含转换的机制, Java 中需要限时逼迫类型转换。 字符串: C++ 中字符串是以 Null 终⽌符代表字符串的结束,⽽ Java 的字符串 是⽤类对象( string 和 stringBuffer )来实现的。 Java 中不提供 goto 语句,固然指定 goto 作为关键字,但不⽀持它的使⽤,使程序简便易读。 Java 的非常机制⽤于捕获破例事件,增强系统容错能⼒。 7 、说⼀下 C++ ⾥是怎么界说常ᰁ的?常ᰁ存放在内存的哪个位置? 对于局部常ᰁ,存放在栈区; 对于全局常ᰁ,编译期⼀般不分配内存,放在符号表中以提⾼访问效率; 字⾯值常ᰁ,⽐如字符串,放在常ᰁ区。 8 、 C++ 中᯿载和᯿写,᯿界说的区别 ᯿载 翻译⾃ overload ,是指同⼀可访问区内被声明的⼏个具有差别参数列表的同名函数,依靠于 C++ 函数名字的修饰 会将参数加在后⾯,可以是参数类型,个数,顺序的差别。根据参数列表决定调⽤哪个函数,᯿载不关⼼函数的返 回类型。 ᯿写 翻译⾃ override ,派⽣类中᯿新界说⽗类中除了函数体外完全相同的虚函数,注意被᯿写的函数不能是 static 的, ⼀定要是虚函数,且其他⼀定要完全相同。要注意,᯿写和被᯿写的函数是在差别的类当中的,᯿写函数的访问修 饰符是可以差别的,只管 virtual 中是 private 的,派⽣类中᯿写可以改为 public 。 ᯿界说(隐藏) 派⽣类᯿新界说⽗类中相同名字的⾮ virtual 函数,参数列表 和返回类型都可以差别,即⽗类中除了界说成 virtual 且完全相同的同名函数才 不会被派⽣类中的同名函数所隐藏(᯿界说)。 9 、介绍 C++ 全部的构造函数 类的对象被创建时,编译系统为对象分配内存空间,并⾃动调⽤构造函数,由构造函数完成成员的初始化⼯作。 即构造函数的作⽤:初始化对象的数据成员。 ⽆参数构造函数: 即默认构造函数,如果没有明确写出⽆参数构造函数,编译器会⾃动⽣成默认的⽆参数构造函 数,函数为空,什么也不做,如果不想使⽤⾃动⽣成的⽆参构造函数,必需要⾃⼰表现写出⼀个⽆参构造函数。 ⼀般构造函数: 也称᯿载构造函数,⼀般构造函数可以有各种参数形式,⼀个类可以有多个⼀般构造函数,前提是 参数的个数或者类型差别,创建对象时根据传⼊参数差别调⽤差别的构造函数。 拷⻉构造函数: 拷⻉构造函数的函数参数为对象自己的引⽤,⽤于根据⼀个已存在的对象复制出⼀个新的该类的对 象,⼀般在函数中会将已存在的对象的数据成员的值⼀⼀复制到新创建的对象中。如果没有表现的写拷⻉构造函 数,则系统会默认创建⼀个拷⻉构造函数,但当类中有指针成员时,最好不要使⽤编译器提供的默认的拷⻉构造函 数,最好⾃⼰界说并且在函数中执⾏深拷⻉。 类型转换构造函数: 根据⼀个指定类型的对象创建⼀个本类的对象,也可以算是⼀般构造函数的⼀种,这⾥提出 来,是想说有的时间不答应默认转换的话,要记得将其声明为 explict 的,来阻⽌⼀些隐式转换的发⽣。 赋值运算符的᯿载 :注意,这个雷同拷⻉构造函数,将=右边的本类对象的值复制给=左边的对象,它不属于构造 函数,=左右双方的对象必需已经被创建。如果没有表现的写赋值运算符的᯿载,系统也会⽣成默认的赋值运算 符,做⼀些基本的拷⻉⼯作。 10 、 C++ 的四种逼迫转换 C++ 的四种逼迫转换包括: static_cast, dynamic_cast, const_cast, reinterpret_cast static_cast :明确指出类型转换,⼀般发起将隐式转换都替换成表现转换,由于没有动态类型检查,上⾏转换 (派⽣类 -> 基类)安全,下⾏转换(基类 -> 派⽣类) 不安全,以是紧张执⾏⾮多态的转换操作; dynamic_cast :专⻔⽤于派⽣类之间的转换, type-id 必须是类指针,类引⽤或 void* ,对于下⾏转换是安全 的,当类型不⼀致时,转换过来的是空指针,⽽ static_cast ,当类型不⼀致时,转换过来的事错误意义的指 针,可能造成⾮法访问等问题。 const_cast :专⻔⽤于 const 属性的转换,去除 const 性质,或增长 const 性质, 是四个转换符中唯⼀⼀个 可以操作常ᰁ的转换符。 reinterpret_cast :不到万不得已,不要使⽤这个转换符,⾼危操作。使⽤特点: 从底层对数据进⾏᯿新解 释,依靠具体的平台,可移植性差; 可以将整形转 换为指针,也可以把指针转换为数组;可以在指针和引⽤ 之间进⾏肆⽆忌惮的转换。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |