c++中class与struct的区别

0. 结构是一种用关键字struct声明的自定义数据类型。与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型。

1.结构在堆栈中创建,是值类型,而类是引用类型。每当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。

2. struct 与class本质上应该是相同的,只是默认的访问权限不同(struct默认是public,class默认是private )

3.结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。但是,结构从基类OBJECT继承。结构也可以实现接口。

时间: 2024-10-15 13:42:48

c++中class与struct的区别的相关文章

C++中class与struct的区别(struct的类型名同时可以作为变量名)

通常我们知道的区别: (一)默认继承权限.如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理: (二)成员的默认访问权限.class的成员默认是private权限,struct默认是public权限. 除了这两点,class和struct基本就是一个东西.语法上没有任何其它区别. 昨天发现一个不知道算不算是区别的东西: struct的类型名同时可以作为变量名,显然class是不可以的,也可以理解,因为class各类型变量定义时直接是类名

浅谈c++中class与struct的区别

本文主要讨论class与struct的区别.为什么是区别而不是共同点呢?因为在绝大部分情况下,class和struct其实是可以互相替换的, 那么区别到底有哪些呢,我总结了一下大概有如下3点: 1.成员的默认访问权限不同.如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public的:相反,如果我们使用class关键字,则这些成员是private的. class A //class { int x; public: A():x(0){} }; struct B<span st

Swift中 Class和Struct的区别

类(Class)和结构体(Struct)区别 1.  内存管理方式不一样, 类引用类型, 分配在堆上. 结构体值类型,分配在栈上. 2. 类, 有析构. 结构体不能有析构, playground中测试直接卡死. 3. 结构体构造函数, 会自动生成带参数的构造器.类不会对有初始化赋值的属性, 生成带参数的构造器. 2. 类有继承特性,结构体没有继承特性,自然也不存在对成员属性和成员方法, 类属性和类方法的重载. 正因为结构体没有继承, 所以操作符函数, 需要static修饰, 而不能用class修

c#中Class和Struct使用与性能的区别

1.Class为引用类型,Struct为值类型 值类型与引用类型的区别这两篇文章讲得很好 http://www.cnblogs.com/tonney/archive/2011/04/28/2032205.html http://blog.csdn.net/liulong1567/article/details/50678930 虽然我们在.net中的框架类库中,大多是引用类型,但是我们程序员用得最多的还是值类型. 引用类型如:string,Object,class等总是在从托管堆上分配的,C#中

在C和C++中struct与typedef struct的区别详细介绍

c中测试code struct Cmstruct { int c; } Cm; // Cm是一个变量 typedef struct MyStruct //这里的 Mystruct 可以省略 { int m; } My; // My 是struct MyStruct 别名 My st; struct Cmstruct cm1; // 只能使用struct Cmstruct来定义 不能使用Cmstruct st.m = 1; printf("%d\n", st.m); // 1 // st

C#中抽象类和接口的区别与使用

一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包含未实现的方法声明: 3.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括

C#中结构与类的区别

一.类与结构的示例比较: 结构示例: 1 public struct Person 2 { 3 string Name; 4 int height; 5 int weight 6 public bool overWeight() 7 { 8 //implement something 9 } 10 } 类示例: 1 public class TestTime 2 { 3 int hours; 4 int minutes; 5 int seconds; 6 7 public void passti

.Net中堆栈和堆的区别

多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题.首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目).然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉.最后是综合题即难一些的问答题或是编程题.这种题目当然是最难解决了,要么会引来面试官的追问,要么就很容易考虑不周全,因此解决这类题目时一定要考虑全面和细致.

YJX_Driver_024_驱动代码中C和C++代码区别

1. 驱动代码中C和C++代码区别 A.函数调用约定 B.C和C++编译方式 C.用C++方式编译驱动 D.C代码升级至C++ E.优化21课的代码 本课主要是做着两个工作:"D.C代码升级至C++"."E.优化21课的代码" [180]把 第21课 的代码复制过来 2.*.c 当文件后缀名为*.c时 编译器将会用C编译器方式编译*.cpp 当文件后缀名为*.cpp时 编译器将会用C++编译器方式编译区别: 解决办法在需要用到C方式编译的函数前加extern &qu