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

一种创建实例的写法:


  
  1. struct A{
  2. int x;
  3. };
  4. struct A a;

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

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


  
  1. struct A{
  2. int x;
  3. };
  4. typedef struct A A;
  5. struct A a;
  6. A a2;

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


  
  1. struct A{
  2. int x;
  3. };
  4. typedef struct A B;
  5. struct A a;
  6. B a2;

(3)typedef 加 结构体定义

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


  
  1. typedef struct A{
  2. int x;
  3. }A;
  4. struct A a;
  5. A a2;

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


  
  1. typedef struct A{
  2. int x;
  3. }B;
  4. struct A a;
  5. B a2;

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

(4)typedef匿名结构体

一种创建实例的写法:


  
  1. typedef struct{
  2. int x;
  3. }A;
  4. A a;

2,C++定义结构体

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

(1)不带typedef

struct可以省略


  
  1. struct A{
  2. int x;
  3. };
  4. A a;

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


  
  1. struct A{
  2. int x;
  3. }a;
  4. int main()
  5. {
  6. struct A b;
  7. A c;
  8. a.x=12345,b.x=1234,c.x=123;
  9. cout<<a.x<<" "<<b.x<<" "<<c.x;
  10. return 0;
  11. }

输出:12345  1234  123

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


  
  1. struct A{
  2. int x;
  3. }A;
  4. int main()
  5. {
  6. struct A a;
  7. a.x=12345,A.x=123;
  8. cout<<a.x<<" "<<A.x;
  9. return 0;
  10. }

输出: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个月内不可修改。