关于C++的类与c的结构体的理解

C++的类class

c++的类只是一个声明并不是定义,是declaration不是definition。

这种声明就像c中的int、char 、double、struct一样。

声明一个类:

class Person
{
          
   
private:
int age;
int height;

public:
void f();
};

而在声明这种Person的类中 age height是不存在的,因为这种类还没有定义一个对象,当定义了一个对象后Person a;,这个对象a才会有age、height。着重理解声明与定义的区别就可以很好的分析C++的class。

C++的类与c的结构体区别

当有了Person这个类时,Person就是像c中的int、char一样,只有当真正赋予了这个类对象后才会有东西诞生。 像c中:int a;一样。 有了int类型的a。 c++中自己可以定义自己想要的类型,并且在这个类型里不仅可以定义变量,还可以定义函数。 当让这个类有对象时,就像c中的struct a;一样,用Person b;。 此时这个b和在c语言中的a是两个不同的类型,b的功能更多,c中的a是int类型的只能赋值然后通过外界函数运算,而b中它是Person类型的,这个类型是我们自己所定义的,我们像要这个类型怎么样就可以怎么样,想要在这个类型给个f()的函数就可以定义个f()的函数。 C++这种类实质就是c的结构体里面可以定义函数,当要使用这个类的自己带的函数时就可以

b.f();

而在c中是不可以在结构体内定义函数的。

有人会说C和C++是两种不同的语言,其实这个说法是错误的,C++的本质还是c,只不过在c的基础上多了许多功能,定义一个类使用类中的函数达到目的其实完全可以通过c中定义个结构体,然后定义一个函数引用结构体指针,达到相同的目的。只不过C++显得更方便,毕竟是c的优化。

经验分享 程序员 微信小程序 职场和发展