C++(2)

C++构造函数、析构函数与抛出异常

C++优点

2、

数组指针:指的是数组名的指针,即数组首元素地址的指针

int (*a)[4]  

指针 数组:即用于存储指针的数组,也就是数组元素都是指针

int* a[4] 

1、int(*p)[4];//ptr为指向含4个元素的一维整形数组的指针变量(是指针)
2、int *p[4];//定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
3、int(*)[4];//实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)中定义的p的数

eg

int main(void)
{
    char *p[]={“TENCENT”,”CAMPUS”,”RECRUITING”};//定义指针数组p,由4个字符串指针组成p[1]指向"TENCENT"
    char **pp[]={p+2,p+1,p};//定义指针数组pp,pp[0]指向p[1]的地址
    char ***ppp=pp;//定义三重指针ppp,存储pp[0]的地址
    printf(“%s”,**++ppp);//指向pp[1]的指针,解引用
    printf(“%s”,*++*++ppp);//从右像左,++ppp后指向pp[2],解引用是指向p的指针,对指向p的指针++,并解引用得到p[2]的指针
    return 0;
}

3、C++与Java的区别?

  • 内存管理:java有垃圾回收机制,jvm管理内存;C++通过new与delete运算符由程序员控制内存的分配与释放;
  • 全局变量:Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变量来完成全局变量的功能。
  • Java不支持头文件,面C和C++语言中都用头文件来定义类的原型,全局变量,库函数等,这种采用头文件的结构使得系统的运行维护相当繁杂。
  • Java不支持宏定义,而是使用关键字final来定义常量,在C++中则采用宏定义来实现常量定义,这不得于程序的可读性.
  • 类型转换不同.在C和C++中,可通过指针进行任意的类型转换,常常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换.
  • Java不用goto语句,而是用try-catch-finally异常处理语句来代替goto语句处理出错的功能.
  • Java对每种数据类型都分配固定长度.比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性,而Java则具有跨平台性(平台无关性).
  • 结构和联合的处理.在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面
  • Java不再使用指针.指针是C和C++中最灵活,也最容易产生错误的数据类型.由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性.而Java对指针进行完全地控制,程序员不能直接进行任何指针操作.

4、栈变量、全局变量、静态变量

static系统自动赋以0值

全局static变量的初始化在编译的时候进行。在main函数被调用之前初始化,并且,只初始化一次 。
函数static变量在函数中有效,第一次进入函数初始化。以后进入函数将沿用上一次的值。

全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。


5、析构函数没有参数列表,无法重载,但是可以重写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值