vlambda博客
学习文章列表

C++面向对象学习,借鉴到C语言

#如果自己都不清楚自己,那么你又希望谁能懂你呢!


随着学习C语言,逐渐明白了面向对象的重要性。所以现在学习c++和pythonlai来进行互补,了解面向对象的实际操作。

/*class c++的类定义**本质上定义了一个数据类型的蓝图。**实际上并没有定义任何数据,但它定义了类的名称意味着,**定义了类的对象包括什么,以及可以在这个对象上执行什么操作*/
//类的定义以关键字class开头,紧跟类的名称,类的主体(用关键字class定义Box的数据类型)class Box { public: double length; //盒子长度 double breadth; //盒子宽度 double height; //盒子高度};//关键字public确定了类成员的访问属性,类对象作用域内,公共成员在类的外部是可以访问的,//也可指定类成员为private / protected
//定义C++对象Box Box1;//声明Box1.类型为Box


#include <iostream>using namespace std;class Box {public:double length;double breadth;double height;double get(void);double set(double len, double bre, double hei);};double Box::get(void){return length * breadth * height;}void Box::set(double len, double bre, double hei){ length = len; breadth = bre; height = hei;}int main(){ Box Box1;double volume = 0.0; Box1.height = 5.0; Box1.breadth = 6.0; Box1.length = 7.0;//Box1的成员变量是public,所有成员都是可以访问的 volume = Box1.breadth * Box1.height * Box1.length;cout << "Box1的体积:" << volume << end1; Box1.set(10.0, 20.0, 22.0); volume = Box1.get();cout << "Box1的体积:" << volume << end1;return 0;}//上述例子可以说明,公共成员可以使用直接成员运算符(.)来直接访问,//但私有成员和受保护的成员不能使用直接成员运算符来直接访问

上面写的是一个很简单的创建一个类对象和通过类函数来对类成员进行操作。

那么c语言可以实现吗?其实也是可以的。

//封装 shape.c//通过结构体封装一下int x ,int ystruct shape{ int x; int y;};//再通过指针函数,对结构体的数据进行操作struct shape * shapp_create(int x, int y){  struct shape *s = malloc(sizeof(struct shape));  s->x = x;  s->y = y;  return s;}void shape_move(struct shape * self, int dx, int dy){  self->x +=dx;  self->y +=dy;}



//mian.c//创建一个shape对象,对数据进行操作struct shape * s = shape_crete(0,0);shape_move(s, 10, 10);/*这里通过定义一个shape类型的结构体,外界只能通过相关的函数来对这个shape进行操作,例如创建(shape_create)、移动(shape_move),甚至是我们自己再创建一个函数获取位置(shape_get)*/


其实一直咋咋唬唬的人反而不会成大器,静心做好自己,不要迷失自己。


静水潜流,深水无声 && 数年饮冰,难凉热血


End 2021/2/2 - 21:00