c++部分语法知识

C++基础知识

1、  c++如何多态实现机制与java的区别?

多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。类的多态性,是指用虚函数和延迟绑定来实现的(运行时)。函数的多态性是函数的重载。(编译时)

存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。
   在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。纯虚函数是虚函数再加上= 0。抽象类是指包括至少一个纯虚函数的类。

Java写不写virtual都是多态的,只要函数名相同直接覆盖

2、  指针和引用的区别?

指针指向一块内存,它的内容是所指内存的地址;引用是原变量的别名。

3、  c++内存是如何管理的与java的区别

内存分成5个区,堆、栈、自由存储区、全局/静态存储区和常量存储区。

  栈,存放局部变量名、函数的参数名函数由编译器自动释放。

堆,由程序员分配释放,就是那些由new,delete分配的内存块,如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。

全局/静态存储区,全局变量和静态变量被分配到同一块内存中.

常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。

 

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题,生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长。(java的内存管理是自动的)

4、  为什么构造函数不能声明为虚函数?

调用构造函数时,虚表才建立,构造函数是虚函数,谁建立虚表啊..

5、运算符优先级


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值