C语言里的“结构体”是不是也有构造函数,析构函数,继承等概念呢?

lxb365 2006-01-14 11:17:34
虚心求教。如果有的话,那么结构和类的区别到底在哪?听人说,结构和类的区别就是:结构默认是公有成员,类默认是私有成员。难道它们就只有这一个概念上的区别?难道类里的那么多东西,结构全部有?
...全文
2794 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
C语言里的“结构体”是不是也有构造函数,析构函数,继承等概念呢

在C语言里没有这些东西

在C++里面,struct和class基本一样,区别 参考 tudou614(魔蟹座的SATAN) 的回答

楼上的大部分没看清你的问题 呵呵~~
逸学堂 2006-01-15
  • 打赏
  • 举报
回复
c++中struct和class的区别
关键词: c++中struct和clas
struct内数据默认是public类型的,
class内数据默认是private类型的。
C++d&e就是这么说的.

其他不同点,只是编译做的处理而已!
晨星 2006-01-15
  • 打赏
  • 举报
回复
C里的struct和C++的struct区别当然很大,没有必要讨论。
但C++和struct和C++的class区别不是很大。
bombwang 2006-01-14
  • 打赏
  • 举报
回复
learning
但是如何使用呢
sankt 2006-01-14
  • 打赏
  • 举报
回复
c++中struct和class的区别
关键词: c++中struct和clas
struct内数据默认是public类型的,
class内数据默认是private类型的。
继续用struct是为了向下兼容啊,习惯问题,以后发展会只用class的
你可以
template<class T>
但是
template<struct T>
并不总是可以用的。

class中有个默认的this指针,struct没有

不同点:构造函数,析构函数 this 指针

error:struct仅仅能定义数据,而CLASS可以定义操作!

class exp
{
int x;
int y;
};
int main()
{
class exp a(1,2);
cout << a.x << a.y;
}
应该可以吧
细微区别:
struct也可以作为C语言中单纯的结构体用,如果里面一个函数都没有的话。而class则无论如何也是个类。考虑如下例子:
struct exp
{
int x;
int y;
};
int main()
{
struct exp a={1,2};
cout << a.x << a.y;
}
这个是成立的,输出12

class exp
{
int x;
int y;
};
int main()
{
class exp a={1,2};
cout << a.x << a.y;
}
则不成立了。这个区别很细微。
基本上就这些区别了。

sankt 2006-01-14
  • 打赏
  • 举报
回复
C里面没有
C++里面有
tudou614 2006-01-14
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

struct exp
{
int x;
int y;
int exp_add(int x,int y)
{
this->x=x;
this->y=y;
return this->x+this->y;
}
};


int main(void)
{
exp myexp;
myexp.x=10;
myexp.y=11;
cout<<"the result is:"<<myexp.exp_add(myexp.x,myexp.y)<<endl;
cin.get();
return 0;
}
tudou614 2006-01-14
  • 打赏
  • 举报
回复
只有这点区别:

c++中struct和class的区别
关键词: c++中struct和clas
struct内数据默认是public类型的,
class内数据默认是private类型的。
继续用struct是为了向下兼容啊,习惯问题,以后发展会只用class的
你可以
template<class T>
但是
template<struct T> //这点不行是因为:typedef class struct;是typedef力不能及的
并不总是可以用的。
---------------------
除此以外,全是谬论
下岗老田 2006-01-14
  • 打赏
  • 举报
回复
结构体中只有数据
类中除了数据还包括方法
zhangl_cn 2006-01-14
  • 打赏
  • 举报
回复
c不是面向对象的语言,没有继承等概念。
YAMABACK 2006-01-14
  • 打赏
  • 举报
回复
如果从空间分配上来看,struct变量放在栈上,而class变量放在堆上,因此struct变量会自动释放,而class变量需要手动释放。

c不是面向对象的语言,没有继承等概念。
zez 2006-01-14
  • 打赏
  • 举报
回复
虚心求教。如果有的话,那么结构和类的区别到底在哪?
没有 !!!!!!!!!!!!!

听人说,结构和类的区别就是:结构默认是公有成员,类默认是私有成员。难道它们就只有这一个概念上的区别?难道类里的那么多东西,结构全部有?

你听谁说的?? 说这些的人怎么把最起码的东西给忘了??
他说的是C++里的结构 !!! 而不是C里的!!!
C++里根本就没有结构,仅仅为了兼容c才有结构这种东西,实际上除了名字以外,C++的结构就是类!!
cn_archer 2006-01-14
  • 打赏
  • 举报
回复
简单来说,c里面的结构(struct)只是把各种不同的数据类型结合在一起,变成一种程序员自定义的数据类型。
结构是完全开放的,任意一个函数,只要能访问到这个结构,就可以随意操纵其中的数据。

而类(class)除了是将不同的数据类型以私有的形式(private)组合在一起之外,还提供了访问这些数据的方法(即类函数)。
用户只能用类提供的接口(类函数)来访问并操纵类中的数据。

这样,就使类具备了封装的功能,有效地保护了数据。
同时,类还有构造和析构、继承和多态等多种优点。这些优势,使得C++的应用越来越广泛。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧