关于c和c++中的struct类型

原创 2007年09月26日 10:52:00
    c 语言中的struct类型和c++中的class很类似,那么它们你之间到底有什么区别呢?
  c语言中的struct类型在默认情况下是public,而class在默认情况下却是private类型。不知你曾经是否思考过关于在struct中是否可以和class中能否定义函数的问题。
     struct是不能定义函数的,应为函数不是一个对象。在c99中Rationale精辟的指出所有c中对象的 本质:
   All objects in c must be representalbe as a contiguous sequence of bytes!
  尽管如此,但是我们却可以在struct中定义一个函数指针,如:
 int add(int a,int b)
{
   return (a+b);
}
  struct   xy
{
  int (*lx)(int ,int );
 
 } ;
int main()
{  int res;
    struct xy  xy_a;
 xy_a . lx=add;
a=xy_a.lx(2,3);
cout<<"The result is:/n"<<a;
return  0;
}
但是正是由于它的这种定义方式,也使它变得不安全!所以应该在c中尽量不要使用这种所谓的“面向对象”的特性。

typedef struct,自定义数据类型struct和类的区别

typedef struct,自定义数据类型struct和类的区别 引用大牛的 typedef struct和struct区别: 自定义数据结构类型: struct  类名{类体}; C语言...
  • chenjianqi0502
  • chenjianqi0502
  • 2016年01月08日 10:00
  • 2455

C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换

①     使用gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据...
  • chunlovenan
  • chunlovenan
  • 2015年03月24日 15:27
  • 4582

socket编程——sockaddr_in结构体操作

http://blog.sina.com.cn/s/blog_6151984a0100etj1.html     sockaddr结构体 sockaddr的缺陷:sa_data把目标地址和端口信息...
  • chengfangang
  • chengfangang
  • 2013年02月25日 14:41
  • 3287

C/C++网络传输struct类型数据

  • 2014年02月16日 16:55
  • 25KB
  • 下载

Linux C/C++ 区别:类型声明、struct

C有数组、结构体、指针、函数、宏 C++有命名空间、引用、默认参数、模板、函数重载、自定义操作符、内联、构造/析构、私有/保护成员、友元、异常。 一、数据类型声明 1.1 C++允许数据类型声明可以出...
  • kanguolaikanguolaik
  • kanguolaikanguolaik
  • 2015年04月15日 23:08
  • 842

关于C/C++中结构体(Struct)类型的sizeof结果的探讨

关于C/C++中结构体(Struct)类型的sizeof结果的探讨 看了很多关于sizeof()的使用解释和说明,对于内置类型来说,基本没有什么问题,但是一旦将sizeof()用于结...
  • hrbeuwhw
  • hrbeuwhw
  • 2012年05月25日 20:18
  • 1750

C++对C加强专题总结:namespace,register,bool,三目运算符,类型检测,struct

 1、面向过程到面向对象的经典易错模型 class circle { public:     double r;     do...
  • wu5215080
  • wu5215080
  • 2014年09月04日 21:47
  • 1565

第六讲:c/c++复合数据类型struct以及联合类型union,动态内存申请malloc和calloc

关于复杂的变量类型——结构体的定义
  • xuan_zizizi
  • xuan_zizizi
  • 2017年04月08日 15:47
  • 190

C/C++中结构体(struct)知识点强化

  • 2009年10月12日 20:38
  • 16KB
  • 下载

【Objective-C】03-OC对象struct类型成员变量的赋值

当OC对象的成员变量是struct类型时,如果直接用c语言的方式直接赋值就会报错,如s->birthday={1990,12,11};就会抛出错误。有两种方法可以解决这个问题: 一、声明并初始化一个s...
  • HONG321
  • HONG321
  • 2014年12月06日 09:34
  • 1469
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于c和c++中的struct类型
举报原因:
原因补充:

(最多只允许输入30个字)