c 和c++ struct之间的区别

一直以来对struct 结构体用的不多,但是最近看了一点关于struce的资料,自己动手试了下感觉C 和C++ 之间struct的区别还是蛮大的。


先介绍一般的struct的结构: 

struct 结构体名{

.....

} 结构体变量名;

这里 结构体名和结构体变量名之间的区别。就是你可以直接使用结构体变量名当做实例。结构体名是来定义结构体的。

比如:

struct student {
    char* name;
 //    int num;
} stu1,stu2;
int main()
{
 struct student  stu;
 stu.name; // 必须先定义
 stu1.name; //直接使用
 return 0;
} 


C语言中因为没有对象的概念,所以没有任何private public protected 的概念.  而struct成员 的默认使用权限就是类似于public.并且是没有成员函数的,只有成员变量.

而C++ 中 struct 可以这么用:

#include <iostream>
using std::cout;
using std::endl;  
struct school
  {
protected: 
  //  virtual  void iname() const =0;
   virtual  void iname() const{}// 虚函数必须定义 纯虚函数可以只声明  
};
 struct student :public school
{
       void iname(){
       cout<<"i named virtual!"<<endl;}
}stu1;

int main(){
     stu1.iname();
     return 0;
}



这样感觉 struct和class相比的话,差别并不是很大。struct也可以定义虚函数和继承,但是这里定义纯虚函数的struct student 好像不可以实例化。 难道是抽象类的影响??不知道.这是一个问题

这里是对struct知识的一个小小的整理吧。 

顺便补充一个小知识点:

string类是C++中才定义的,#include<string>.所以C 中是没有string的,

而C中可以使用 typedef char* string; 来使用string.



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值