游戏面试题:struct与class的区别
2015-09-16 11:36
309 查看
http://blog.sina.com.cn/s/blog_48f587a80100k630.html 描述了C++中struct和class的区别
http://www.cnblogs.com/gsk99/archive/2011/05/20/1904552.html 描述了C#中struct和class的区别
在C++中
区别1:struct默认public,class默认private(继承访问权限,成员访问控制)
继承时,如果一方是struct,一方是class,那么默认取决于子类。
区别2:class关键字可以用来定义模板参数,struct关键字不能
在C#中
区别1:class是引用类型,struct是值类型。因此class可以为null,struct不可以。
区别2:实例化class,创建在堆上,实例化struct,创建在栈上。
区别3:使用的是class对象的引用,直接使用struct。
区别4:class内部可以有初始化器,例如class A{int a=10;},struct内部不能有初始化器(报语法错误)
区别5:class可以有无参构造函数,struct不能(报语法错误)
区别6:class必须用new关键字实例化(class创建在堆上),struct不需要
区别7:class支持继承和多态,struct不支持,但是struct可以实现接口(C++中struct也可以继承和多态)
(因为struct不支持继承,所以struct成员不能以protected修饰)
区别8:class构造函数不需要初始化全部字段,struct构造函数必须初始化所有字段
区别9:class可以自定义析构函数,struct不可以
http://blog.sina.com.cn/s/blog_48f587a80100k630.html 描述了C++中struct和class的区别
http://www.cnblogs.com/gsk99/archive/2011/05/20/1904552.html 描述了C#中struct和class的区别
在C++中
区别1:struct默认public,class默认private(继承访问权限,成员访问控制)
继承时,如果一方是struct,一方是class,那么默认取决于子类。
区别2:class关键字可以用来定义模板参数,struct关键字不能
在C#中
区别1:class是引用类型,struct是值类型。因此class可以为null,struct不可以。
区别2:实例化class,创建在堆上,实例化struct,创建在栈上。
区别3:使用的是class对象的引用,直接使用struct。
区别4:class内部可以有初始化器,例如class A{int a=10;},struct内部不能有初始化器(报语法错误)
区别5:class可以有无参构造函数,struct不能(报语法错误)
区别6:class必须用new关键字实例化(class创建在堆上),struct不需要
区别7:class支持继承和多态,struct不支持,但是struct可以实现接口(C++中struct也可以继承和多态)
(因为struct不支持继承,所以struct成员不能以protected修饰)
区别8:class构造函数不需要初始化全部字段,struct构造函数必须初始化所有字段
区别9:class可以自定义析构函数,struct不可以
相关文章推荐
- 高效程序员的45个习惯
- 面试题_HashTable和HashMap的区别
- sql面试题详解
- 《黑马程序员》Java多线程
- 程序员平时该问问自己的10个问题
- 我是程序员,加班就是我活该吗?
- 19岁程序员在谷歌学到的5条经验教训
- 盘点十大提供最好面试体验的科技公司
- Java面试题总结 from Baidu 网易 阿里
- 程序员面试笔试题目-素数、atoi、itoa、strstr、strcpy以及两个数交换(一)
- 操作系统常见面试题总结
- java 面试题
- 40个Java集合面试问题和答案
- Java程序员不可不知的几个网站,你去过几个?
- 13 种激励程序员的方法
- 《黑马程序员》Java实用类
- 程序员-你幸福了吗
- 被swoole坑哭的PHP程序员
- java面试题三 位运算符
- java面试题二 "%"运算符的问题