浅谈C语言和C++中“类”的区别

在C语言中,没有“类”的概念,但是可以由结构体struct构造出我们所需要的数据类型,struct可以组合不同的数据类型,可以看作是C语言中的“类”。

下面是C语言中的结构体的实例。

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 typedef struct Person{
 5     unsigned age;
 6     char name[20];
 7 }person;
 8 
 9 int main(void){
10     person* xiao_ming = (person*)malloc(sizeof(person));   // 注意:p->q相当于(*p).q
11     (*xiao_ming).age = 13;
12     strcpy(xiao_ming->name,"xiao ming");
13     printf("name is %s
",xiao_ming->name);
14     printf("age is %d",xiao_ming->age);
15     return 0;
16 }

在c++语言中则直接用class可以构造真正的类,并且实例化为对象。

下面是简单的实例。

 1 #include<iostream>
 2 #include<string>
 3 #include<cstdlib>
 4 #include<cstddef>
 5 
 6 using namespace std;
 7 class Person{
 8     public:
 9         string name;
10         size_t age;
11 };
12 
13 class Shabi{
14     public:
15         string name;
16         size_t age;
17         Shabi(string m,size_t a):name(m),age(a){cout<<"构造了..."<<endl;}
18         ~Shabi(){cout<<"析构了..."<<endl;}
19 };
20 
21 int main(){
22     Person* xiao_ming = new Person();
23     xiao_ming->name = "xiao ming";
24     xiao_ming->age = 13;
25     cout<<"name is "<<xiao_ming->name<<endl<<"age is "<<xiao_ming->age<<endl;
26     Shabi liu_ya = Shabi("liu ya",21);
27     cout<<"shabi is "<<liu_ya.name<<endl<<"age is "<<liu_ya.age<<endl;
28     return 0;
29 }
原文地址:https://www.cnblogs.com/jeavenwong/p/7659590.html