《数据结构》学习笔记(2)

本文深入探讨C++中类的定义与使用,包括构造函数、析构函数、重载运算符、友元函数等内容,并介绍了struct与class的区别以及union在C++中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的定义体现了抽象数据类型的思想,可以用以支持说明与实现的分离,将抽象数据类型的实现封装在类的内部,使达到信息隐蔽的目标。

#include <iostream>
using namespace std;
class Point{ //类定义
public: //共有域
Point(int,int);//构造函数
Point(Point &);//复制构造函数
~Point(); //析构函数
int get_x(); //存取函数
int get_y();
void put_x(int a);
void put_y(int b);
Point operator+(Point p);//重载函数:当前对象+参数表中对象p
Point operator*(int i);  //重载函数:当前对象*参数表中整数i
int operator>(Point p);  //重载函数:判断当前对象>参数表中对象p否
int operator<(Point p);  //重载函数:判断当前函数<参数表中对象p否
int operator==(Point& p);//重载函数:判断当前函数==参数表中对象p否


private:
int x;
int y;
friend istream& operator>>(istream& in,Point& p);//友元函数:输入
friend ostream& operator<<(ostream& out,Point& p);//友元函数:输出
};
ostream& Point::operator<<(ostream& strm,Point p){
return strm<<"("<<p.get_x()<<","<<p.get_y()<<")";
};

c++扩充了C中struct型的功用,加进成员函数以说明一个类。

在c++中struct和class的区别在于:在struct中,默认访问级别是public,

  在class中,默认访问级别是private。

除此之外class与struct是等价的。

与struct一样,union也可以定义类。c++中union可以包含函数和变量,还可以包含构造函数和析构函数。union保留了所有C的特性,让所有的数据成员共享相同的存储空间,在程序语言设计中称之为“等价变量”。

与struct和class相比,union可节省存储。union默认存取级别是public。

建立类的对象也称为实例化,可以自动的,或静态的,或动态分配来建立。

Point p(6,3); //自动的

Point q;               //自动的

static Point s(3,4) //静态的

Point *t = new Point (1,1) //通过动态分配

构造函数

Point ::Point(int a,int b){x=a;y=b;}

Point ::Point(int a,int b):x(a),y(b){}

两种形式等效。

析构函数

当要撤销对象时,需要隐式调用另一个函数,叫做析构函数。

一个类可以定义几个构造函数,但只能定义一个析构函数。

当控制要退出自动变量的作用域时,或当通过delete命令释放一个动态分配的变量时,就调用析构函数。

当main函数执行结束是将释放静态声明的变量。

一个析构函数用于在删除一个类的对象时做清除工作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值