文章目录
前言一、类是什么?二、类与结构的区别
1.分别用结构体和类写链表//自引用结构2.类的public和private总结
前言
记录了C++类的学习笔记,主要记载基于C语言结构体学习C++类的学习笔记记录。
一、类是什么?类(class)是一种将数据和函数组织在同一个结构里的逻辑方法。定义类的关键字为class ,其功能与C语言中的struct类似,不同之处是class可以包含函数,而不像struct只能包含数据元素。除此以外还有权限的区别如public和private权限。
定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。
类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。例如,我们使用关键字 class 定义 Box 数据类型,如下所示:
class Box
{
public:
double length; // 盒子的长度
double breadth; // 盒子的宽度
double height; // 盒子的高度
};
关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。也可以指定类的成员为 private 或 protected。
二、类与结构的区别 1.分别用结构体和类写链表//自引用结构
结构体:
#includetypedef struct Point{//typedef重新定义类型为Point int x; int y; struct Point* next;//定义一个指针分量用于指向下一个结构以实现链表 }Point; int main(){ Point p1, p2, p3, p4, p5;//定义p1,p2,p3,p4,p5五个结构体 Point *p;//定义一个指针用于指向一个结构体 p1.x=1;p1.y=0; p2.x=2;p2.y=3; p3.x=3;p3.y=4; p4.x=4;p4.y=5; p5.x=5;p5.y=6; p1.next=&p2; p2.next=&p3; p3.next=&p4; p4.next=&p5; p5.next=NULL;//终止符号 for(p = &p1;p!=NULL;p=p->next)//通过指针来输出结构体中的数据 printf("(%d,%d)n",p->x,p->y); return 0; }
执行结果 :
2.类(类中可以写成员函数)
#includeusing namespace std; class Point//类名为Point { public: int x; int y; Point* next;//定义一个指针分量用于指向下一个结构以实现链表 Point()//初始化 { x=0;y=0;next=NULL; } void print(); }; void Point::print(){ cout<<"("< x<<","< y<<")"< next)//通过指针来输出结构体中的数据 p->print(); return 0; }
执行结果:
类与结构体的一个区别就是可以在内部声明和调用函数
2.类的public和private二者最大的区别是访问权限,就是可以直接访问public和进行修改,而private中的数据只能通过对public的操作来完成。一个例子是java中另一个例子是利用链表。
强行访问时编译报错
正确访问方式:
#includeusing namespace std; class Point { public: Point(){ this->x=0; this->y=0; this->next=NULL; } int getX(); int getY(); Point* getNext(); void inPutX(int x); void inPutY(int y); void inPutNext(Point* next); private: int x; int y; Point* next; }; int Point::getX(){return this->x;} int Point::getY(){return this->y;} Point* Point::getNext(){return this->next;}//一系列修改 void Point::inPutX(int x){this->x=x;} void Point::inPutY(int y){this->y=y;} void Point::inPutNext(Point* next){this->next=next;} int main(){ Point P1,P2; P1.inPutX(10); P1.inPutY(15); cout< 执行结果
Notes:
class默认权限是private;
总结类的应用很广泛可以应用在以后的java学习等等场景之中。C++类的用法和C语言结构的用法十分相似,实现的功能也大相径庭。



