我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 程序设计 -> C语言 -> 入门基础 -> 文章内容  
栏目导航
· 入门基础 · c编程实例
· C数据结构 · C等级考试
热门文章
· C语言函数大全(c开头)..
· C语言函数大全(b开头)..
· C语言函数大全(d开头)..
· C语言函数简介(无实例..
· C语言函数大全(a开头)..
· C语言函数大全(e开头)..
· C语言函数大全(f开头)..
· C语言函数大全(h开头)..
· C语言函数大全(g开头)..
· C语言函数大全(v开头)..
· C语言的结构和C++类的..
· C语言函数大全(k开头)..
相关文章

· 二级C语言实例解答
· 二级考试大纲(C语言..
· 2003全国等级考三级..
· 计算机二级C语言过关..
· 二级(C语言程序设计..
· c语言算法--贪婪算法..
· c语言算法--算法思想..
· c语言算法--贪婪算法..
· c语言算法--贪婪算法..
· c语言算法--贪婪算法..
查看更多与C语言的结构和C++类的异同相关内容

C语言的结构和C++类的异同
作者:幽火  来源:www.5ihack.com  发布时间:2007-1-8 13:33:33  发布人:ghostfire

减小字体 增大字体

  学过C++的人一定知道类是什么,精通C的人也一定知道什么是结构,作为一名C语言的初学者的我,不仅产生了一些疑问:什么叫结构,什么是类?有人说他们长的很像,为什么这么说呢?他们之间有什么联系呢?但他们毕竟一个叫结构另一个叫类,他们又有什么区别呢?带着这些问题,我浅浅的了解了一下C语言的结构和C++的类。

  首先我们要知道什么是结构什么是类:

  结构是用同一个名字引用的相关的集合(或称聚合题),它是用其他类型的对象构造出来的派生数据类型。

  说到派生,其实也不难理解:

  结构中可包含多种不同数据类型的变量,如:int型的,float型的,char型的,long型的,甚至数组合指针,以及自引用指针等等,结构中包含有这些数据类型的变量,所以说结构是派生而来。

  结构实例:

  struct player/*关键字struct定义一个结构*/
{      
 int number;/*声明一个int型的number*/
 char *name;
 char *nationality;
}

  在struct后边的player就变成了像int,一样的声明符。

  main()
{
 struct player A;/*声明一个player型的结构A*/
 struct player *aptr;/*声明一个指针*/
 ......
}

  数组与结构一瞥:

  
相同点 特点
数组都是聚合体数组种植包含相同的数据类型的元素,每个元素都有在数组下的一个数标,如:s[n]
结构 可包括多种不同数据类型的变量。(本篇大部分都在介绍结构,在这里就不多说了)
枚举利用关键字enum声明枚举,一般用来声明元素有规律的对象体,例如:月份,日期,星期等。
联合 利用关键字union声明联合,联合的每个成员的地址就是联合对象的地址,之所以他们公用一个地址,所以联合又叫共同体,也因此只有最后赋给联合成员的值才有效。

  
符号名称读法用法
. 结构成员运算符结构A的成员numberA.number
-> 结构指针运算符aptr指向结构的成员aptr->number

  结构初始化:

  结构初始化有两种:

  1. 用初始化列表初始化,即在声明结构变量时,在变量明后用等号连接在花括号中的初始化值列表来初始化该结构变量,初始化值用逗号分开。例如:

  struct player A={5,“Xiaogang”,“China”};

  2. 利用访问结构成员初始化。

  例如:

  A.number=5;
A.name="Xiaogang"
A.nationality="China";/*效果于1定义得一样*/
aptr ->number=5;
aptr ->name="Xiaogang";
aptr ->nationality="China";/*效果于1定义得一样*/

  关键字typedef:

  typedef 可用来建立已定义好的数据类型的别名。例如:

  typedef struct player Player;

  定义型的类型名Player,它是类型struct player的别名。

  *结构的重要性是不言而喻的,他和指针可用来构造更复杂的数据结构,例如:链表、队列、堆栈和树。

  (在这里我就不多说了!)

  类定义:

  在解释类之前,我们必须了解对象:

  称现实世界中客观存在的事物为对象,只要是客观世界你能想得到的实物、抽象的物都可以是一个对象;例如:整数是一个对象,汽车是对象,人也是对象......

  C++可使用对象名、属性和操作三要数来描述对象,我们用对象结构图来描述一个对象:

  这里有一个人叫小刚,我们用对象结构图来描述他:

  清楚什么是对象了,我们可以介绍类了。

  像构造枚举和结构一样,类也是一种用户自己构造的数据类型,类是在C++下的,所以类遵循C++的规定。C++中声明的一般形式为:

  class 类名 {
            私有数据和函数   /*如果没有使用关键字,则所有成员默认private:为                         private权限*/
            私有数据和函数
     public:
            共有数据和函数
     protected:
            保护数据和函数
};

  私有(Private)成员,只有在类中说明的函数才能访问该类的私有成员,而在该类外的函数不可以访问私有成员;公有(Public)成员,类外面也可访问公有成员,成为该类的接口;还有一种是保护(Protected)成员,这种成员只有该类的派生类可以访问,其余的在这个类外不能访问。

  从上图可以看出,类与结构既有相似又有不同,class似与struct一样是声明一个聚合体,而且类也有数据成员,但是类声明的对象的初始化则与结构大相径庭,(对象的初始化使用构造函数来完成的,构造函数将在后边介绍)结构中没有像类一样的如public这样的权限,结构中是不可以有函数的,而类中可以存在函数。

  构造函数:

  *“构造函数”是一个特殊的成员函数,不要把它理解为构造一个函数,在c++中构造函数一般与类的名字相同。

  class circle {
private:
    int r;         /*一个圆的搬进是圆的数据成员(圆性质)*/
public:
    circle(int i);
};                /*定义一个圆类*/
include <iostream.h>
circle::circle(int i){      /*"::"是类运算符,只要记住‘.’和‘->’是用于对象的,"::"                   是用于类的成员的*/
 r=i;
}                 /*定义构造函数*/
main(){
 circle(6);           /*初始化了r=6*/
}

  此上为构造函数简单用法。既然说到了构造函数,也就跑不了析构函数。在对象消失时,析构函数将释放由构造函数分配的内存。一般用于类通明的函数名,没有参数,并在函数前面加上“~”号。如:~circle();

  从已有的对象类型出发建立一种新的对象类型,使它继承原对象的特点和功能,这种思想是面向对象设计的主要贡献。

  从一个或多个以前定义的类产生型类的过程称为派生,这个新类又成为派生类。类的继承是指新类从基类那里得到的特征,也就是继承基类的数据和函数。继承和派生类不难理解,在我们生活中继承的例子不胜枚举。

  如:中学生、大学生继承学生的性质;输入输出设备继承输入设备和输出设备的性质和特点。

  可见,类要比结构功能强,性质多,类中存在函数,可以看作是一个活生生的生物,它可以做一系列动作,甚至可以继承;而结构好像是一个“笔记本”,她只记录了物体的一些性质。我作为一个初学者,是以结构为引子,了解了一些c++的类,涉入不深,还请高手多提建议!

查看更多与C语言的结构和C++类的异同相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      C语言初级讲座之慨论       C语言学习中的四大难点
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图