C/C++结构体的区别

C/C++结构体的区别

>_<:C中的结构体和C++中结构体的不同之处:

  • 在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。

>_<:C++中的结构体和类的异同:

一、相同之处:

  • 结构体中可以包含函数;
  • 也可以定义public、private、protected数据成员;
  • 定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;
  • 也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。

二、不同之处:

  • 结构体定义中 默认情况下的成员是public,而类定义中的默认情况下的成员是private的。
  • 类中的非static成员函数有this指针,(而struct中没 有是错误的,一直被误导啊,经过测试struct的成员函数一样具有this指针),
  • 类的关键字class能作为template模板的关键字 即template<class T> class A{}; 而struct不可以。
  • 实际上,C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合。

转载自:http://www.cnblogs.com/this-543273659/archive/2011/07/18/2109834.html

C/C++结构体的区别,布布扣,bubuko.com

时间: 2024-10-25 17:59:07

C/C++结构体的区别的相关文章

C语言的结构体和C++结构体的区别

关于C++中声明结构体中需要使用构造器创建实例对象的语法: 接着上两个代码截图你就初步体会到C语言的结构体和C++结构体的区别了:     对于右边的C++结构体的使用类似Java,C++,Swift中的类,类中有构造器方法,然后构造器创建这个类的实例对象. 当然Swift中也有一样用法的结构体.毕竟Swfit是集大家之所成的现代语言.

数组和链表的区别以及数组和结构体的区别

1,数组和链表的区别? 链表和数组都叫可以叫做线性表, 数组又叫做顺序表,主要区别在于,顺序表是在内存中开辟一段连续的空间来存储数据,而且必须是相同类型的数据. 而链表是通过存在元素中的指针联系到一起的,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域,链表既可以靠指针来连接多块不连续的的空间也可以用一段连续的空间, 在逻辑上形成一片连续的空间来存储数据. 两种数据结构各有各的好处,链表方便删除和插入,数组方便排序等. 数组从栈中分配空间, 对于程序员方便快速

C语言的结构体和 C++结构体的区别

 C语言的结构体和 C++结构体的区别 关于C++中声明结构体中需要使用构造器创建实例对象的语法: <C++的结构体构造方法的基本概念:结构体的构造方法需要和结构体的名字相同,并且无返回值,也不要void关键字,这样的方法就是构造器的初始化方法> 接着下面两个代码截图(一个是C源码,一个是C++源码)对比你就初步体会到C语言的结构体和C++结构体的区别了:      对于右边的C++结构体的使用类似Java,C++,Swift中的类,类中有构造器方法,然后构造器创建这个类的实例对象. 当然Sw

UNITY3D c#脚本中处理类与结构体的区别

1.在C#中结构体类型定义时,成员是不能初始化的,这样就导致了,定义结构体变量时,变量的所有成员都要自己赋值初始化.但对于类,在定义类时,就可以初始化其中的成员变量,所以在定义对象时,对象本身就已经有了初始值,你可以自己在重新给个别变量赋值.(注意在C++中,类的定义中是不能初始化的,初始化要放在构造函数中) 2.结构体变量 和类对象 进行值传递时,结构体变量进行的就是值传递,而类对象进行的是引用传递,或者说传递的是指针,这样在函数中改变参数值,结构体对象的值是不变的,而类对象的值是变化了. 下

类的声明 , 类和结构体的区别 , 内联函数

#include<iostream> using namespace std; class A;//类的声明 class B { private: A *a;//必须是指针 ,不能为 A a; }; class  A { private: B b; }; int main() {} 类和结构体区别: 结构体默认public 类默认是private 在继承方式:结构体默认公有继承 类默认私有继承 inline 调用内联函数并没有执行函数的调用过程,只是把函数的代码嵌入到了程序的调用点 , 减少了

C和C++结构体的区别

C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种. C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的. 在C中定义一个结构体类型要用typedef,如下: typedef struct Complex{ int read; int image; }Comple

联合体与结构体的区别

联合体,又称共用体.编程的时候需要使几种不同类型的变量存放到同一段内存单元中,而衍生出来的一种类型.也就是说,联合体中每次只能存其中的一个变量,这个变量在联合体变量中存入新的成员就失效了!!!用法与结构体一致,但是多用于结构体内部. 1 struct name 2 { 3 int age; 4 char* name; 5 union text //text是标题,标题可以不写 ,此标题在在结构体内无作用 6 { 7 char a; 8 ... 9 } 10 }mytext;//mytext是结构

C++类class和结构体struct区别

转自:http://www.weixueyuan.net/view/6337.html C++语言继承了C语言的struct,并且加以扩充.在C语言中struct是只能定义数据成员,而不能定义成员函数的.而在C++中,struct类似于class,在其中既可以定义数据成员,又可以定义成员函数. 在C++中,struct与class基本是通用的,唯一不同的是如果使用class关键字,类中定义的成员变量或成员函数默认都是private属性的,而采用struct关键字,结构体中定义的成员变量或成员函数

C#中类与结构体的区别

1,结构是实值类型(Value Types),而类则是引用类型(Reference Types). 2,结构使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation). 3,所有结构成员默认都是Public,而类的变量和常量数则默认位Private,不过其他类成员默认都是Public. 4,结构成员不能被声明位Protected,而类成员可以. 5,结构变量声明不能指定初始值.使用New关键字货对数组进行初始化,但是类变量声明可以. 6,结构不能声明默认的构