从C语言到C++,是编程思想的进步,技术发展的结果吧,所以C++基本上是兼容C的语法的,C++的很多东西也是从C中继承过来的,然后再发扬,C语言的结构体便是C++中类的雏形。
简单的一句话,C语言中的结构体是C++中类的祖先,也可以说C++中的类是C语言中结构体的超集,当然啦,祖先肯定是还没有完全进化的,所以C语言中的结构体的功能相对于C++中的类的功能也相对简单许多。
(1)下面举一个简单的例子,以Point类为例
C语言的结构体可以这样使用:
#include<iostream>
using namespace std;
struct Point
{
intx;
inty;
};
int main()
{
structPoint p;
p.x=9;
p.y=0;
cout<<p.x<<endl<<p.y<<endl;
return0;
}
(2)下面是C++中Point类的程序:
#include<iostream>
using namespace std;
//struct Point
class Point
{
public:
intx;
inty;
};
int main()
{
classPoint p;
p.x=9;
p.y=0;
cout<<p.x<<endl<<p.y<<endl;
return0;
}
从上面可以看出,只是在C结构体的基础上稍稍加一点修改,便可以将C结构体变成C++的类;
(3)相同之处:
C语言的结构体和C++的类在C++程序中是可以通用的,类的内部可以包含函数,其实结构体内部也是可以包含函数的,
#include<iostream>
using namespace std;
struct Point
//class Point
{
intx;
inty;
voidDisplay()
{
cout<<x<<endl<<y<<endl;
}
};
int main()
{
structPoint p;
p.x=9;
p.y=0;
cout<<p.x<<endl<<p.y<<endl;
p.Display(); //调用结构体中的函数
return0;
}
这样使用结构体也是可以的。
(4)不同之处:
可以看出,C语言结构体数据成员未加权限修饰符,默认为public类型,可以直接输入输出,直接对结构体对象的数据成员进行操作。
如上图,而C++中的类成员默认属性为private类型,是不能直接进行操作的。
(4)C语言是面向过程的编程语言,C++是面向对象的编程语言,面向过程和面向对象是一种思想,不是完完全全可以区分开的,它没有一个明确的界限,它是编程语言发展的一个过程,就如同C语言的结构体便是C++中类发展的雏形。
当然了,C++类的用法远远不止这些,这里只是简述一下结构体和类的区别,对于结构体和类的用法这里不详述,想要了解的朋友可以去学习C语言和C++面向对象编程,