易截截图软件、单文件、免安装、纯绿色、仅160KB

C++的类与C里面的struct的区别


C++的类与C里面的struct的区别
2009-10-11 15:32
关于使用大括号初始化
class和struct如果定义了构造函数的话,都不能用大括号进行初始化
如果没有定义构造函数,struct可以用大括号初始化。
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
关于默认访问权限
class中默认的成员访问权限是private的,而struct中则是public的。
关于继承方式
class继承默认是private继承,而struct继承默认是public继承。
为什么在C++中存在struct?很多人都会想到这是为了让C++和C兼容,那么问题就是如何使用C++中的struct和C兼容起来。
把C++要交换到C程序的数据在C++程序中声明成一个struct,然后根据C++中程序的语意选择继承或者聚合这个struct,然后在使用的时候就可以把这个struct封装起来传递到C中或者从C中传递到C++。(注:在深入探索C++对象模型中建议使用聚合,而不是继承,原因是为了和C语言的空间分布兼容,因为在C++引入虚函数,虚继承导致了派生类的空间包括struct的空间和vptr、vbtl,而且vptr、vbtl存放在哪里由编译器自己决定,C++标准中没有定义)。
给出一个从C++到C语言的一个简单的例子:
//C++头文件moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
struct person
{
       int age;
       char name[20];
};
class male
{
      private:
              int wife;
              struct person per;
      public:
             int getAge()
             {
                return per.age;
              }
};
extern "C" void print(person );
#endif
//C++的实现文件
#include "moduleA.h"
#include <stdio.h>
void print(person per)
{
        printf("age :%d, \n",per.age);


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

C/C++招聘的一些感受和经验[转]


C/C++招聘的一些感受和经验[转]
 
 前段时间刚参加了n多公司的C/C++软件工程师的面试,有国企,外企,私企(moto,飞思卡尔,港湾,中国卫星XXX(这个牛))等等等等。感受感想颇多,近日终于空闲,在此表述一下。 
    本人基本条件:3年开发经验,2year+ Windows development experence,1 ......

50个c/c++源代码网站

50个c/c++源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。
1、http://snippets.dzone. ......

oracle C# SQL 语句

在VS中写SQL语句的时候,千万万千要小心再小心,比如 说 数据类型的匹配, 单引号(这个能把人迷死)
 where 子句中可千万不能有空格(当查询条件为字符串的时候能把你弄疯,我弄这个的时候都疯了几次了,什么都对就是查不出来,调试了N遍才发现。)不行了,吃饭去,再不吃看见活人都想咬了。 ......

Linux下的C编程实战之文件系统编程

1.Linux文件系统
  Linux

持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供
了虚拟文件系统(VFS)来统一它们的行为,虚拟文件系统为不同的文件系统与内核的通信提供了一致的接口。下图给出了Linux中文件系统的关系:
  在Linux平台下对文件编程可 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号