C和C++的区别(2)结构体

举报
用户已注销 发表于 2021/11/19 04:51:41 2021/11/19
【摘要】   一,成员 1,C++允许有内部成员函数,且允许该函数是虚函数,C的结构体内不允许有函数存在,但是可以有函数指针。所以C的结构体是没有构造函数、析构函数、和this指针的。 2,C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。   二...

 

一,成员

1,C++允许有内部成员函数,且允许该函数是虚函数,C的结构体内不允许有函数存在,但是可以有函数指针。所以C的结构体是没有构造函数、析构函数、和this指针的。

2,C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。

 

二,继承

1,C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。

 

三,定义方式

1,C语言定义结构体

(1)不带typedef

一种创建实例的写法:


      struct A{
         int x;
      };
      struct A a;
  
 

(2)先定义结构体,再typedef

同名定义,两种创建实例的写法:


      struct A{
         int x;
      };
      typedef struct A A;
      struct A a;
      A a2;
  
 

不同名定义,两种创建实例的写法:


      struct A{
         int x;
      };
      typedef struct A B;
      struct A a;
      B a2;
  
 

(3)typedef 加 结构体定义

同名定义,两种创建实例的写法:


      typedef struct A{
         int x;
      }A;
      struct A a;
      A a2;
  
 

不同名定义,两种创建实例的写法:


      typedef struct A{
         int x;
      }B;
      struct A a;
      B a2;
  
 

本质上,先定义结构体再typedef,和typedef 加 结构体定义,并没有什么区别。

(4)typedef匿名结构体

一种创建实例的写法:


      typedef struct{
         int x;
      }A;
      A a;
  
 

2,C++定义结构体

C++除了可以使用上述C语言能使用的所有写法之外,还有3种额外写法

(1)不带typedef

struct可以省略


      struct A{
         int x;
      };
      A a;
  
 

(2)结构体定义并创建实例,不同名


      struct A{
         int x;
      }a;
      int main()
      {
         struct A b;
          A c;
          a.x=12345,b.x=1234,c.x=123;
          cout<<a.x<<" "<<b.x<<" "<<c.x;
         return 0;
      }
  
 

输出:12345  1234  123

(3)结构体定义并创建实例,同名


      struct A{
         int x;
      }A;
      int main()
      {
         struct A a;
          a.x=12345,A.x=123;
          cout<<a.x<<" "<<A.x;
         return 0;
      }
  
 

输出:12345  123

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/109289414

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。