C语言中的结构体与C++中的类异同

从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++面向对象编程,





已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页