Chinaunix首页 | 论坛 | 博客
  • 博客访问: 226927
  • 博文数量: 53
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 507
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-22 13:38
文章分类

全部博文(53)

文章存档

2009年(1)

2008年(52)

我的朋友

分类: C/C++

2008-07-26 15:28:13

3. C和C++间struct的深层区别

  在C++语言中struct具有了“类” 的功能,其与关键字class的区别在于struct中成员变量和函数的默认访问权限为public,而class的为private。

  例如,定义struct类和class类:

struct structA
{
char a;

}
class classB
{
      char a;
      …
}

  则:

struct A a;
a.a = 'a';    //访问public成员,合法
classB b;
b.a = 'a';    //访问private成员,不合法

  许多文献写到这里就认为已经给出了C++中struct和class的全部区别,实则不然,另外一点需要注意的是:

  C++中的struct保持了对C中struct的全面兼容(这符合C++的初衷——“a better c”),因而,下面的操作是合法的:

//定义struct
struct structA
{
char a;
char b;
int c;
};
structA a = {'a' , 'a' ,1};    //  定义时直接赋初值

  即struct可以在定义的时候直接以{ }对其成员变量赋初值,而class则不能,在经典书目《thinking C++ 2nd edition》中作者对此点进行了强调。


阅读(1154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~