类和对象函数总结
类和对象函数总结
最近刚开始学习C++,初学就是类和对象,说实话,有点被静态函数,const关键字,析构、构造、重载、拷贝等函数折磨,还有new/delete,栈和堆上等等诸如此类的学的有点混乱,到底是放在public里面还是放在private里面呢?简单放一下就能差别那么大吗?因此写一篇此博客,缕一下最近所学内容,用自己的语言描述一下,从几大函数说起,到单例模式及new/delete,now lets go!
构造函数及无参构造函数
首先是为什么要有这个构造函数,平时我们使用创建类对象的时候,实际上就是使用了这个构造函数,也就是
对象的创建需要调用一个函数 ---->构造函数
它的形式很简单,与类名相同,并且没有返回值,即使是void也没有,光秃秃的司令一个,其作用就是初始化数据成员。
#include<bits/stdc++.h>
using namespace std;
class Czj{
public:
Czj(){//这里可以看到初始化构造函数
cout<<"hello bokeyuan"<<endl;
_x=0;
_y=0;
}
Czj(int x,int y){//这里是函数的重载
cout<<"reset:";
_x=x;
_y=y;
}
void print(){
cout<<"x="<<_x<<" y="<<_y<<endl;
}
private:
int _x;
int _y;
};
void test(){
Czj p;//这里创建了一个对象,同时也会调用构造函数,而没有传递参数的时候会默认调用无参函数
cout<<"p:";
p.print();
Czj p_reset(1,2);//这里是创建的重载后的对象
cout<<"p_reset:";
p_reset.print();
}
int main(){
test();
return 0;
}
输出:
jing@jing:~/code/class$ ./1
hello bokeyuan
p:x=0 y=0
reset:p_reset:x=1 y=2
//要注意的是,如果是没有进行初始化重载后的对象,他就会随机输出几个数,类似于int x,y 后没有进行初值化。
同时也要注意一个非常常用的初始化表示式,也就是在构造函数之后,进行初始化列表,这才是初始化,上面的仅仅叫做赋值.
class Point{
public:
Point(int x=0,int y=0)
:_x(x)//注意前面的符号 以及有没有分号
,_y(y)//括号内的是对它进行赋值的,x和y是传入的
}
同时要主要的是:数据成员在初始化列表中被初始化的顺序只与其在类中被声明的顺序有关,怎么理解呢?也就是说private里面是怎么样的顺序,这里面就是什么样的顺序。也就是说一定要注意好这个private的顺序。
class Point{
public:
Point(int x=0,int y=0)
:_x(x)
,_y(y)
private:
int _y;
int _x;//这样写的话,就会将x的值赋给_y
}
构造函数到此为止,其实也没什么好说的,就是注意点初始化的顺序,以及格式,还有重载的方法。
析构函数--对象的销毁
析构函数我的理解就是将你创建的对象里面,使用完后不要的销毁掉,专门搞了个函数显得高大上一点。
形式为:名字与类名相同,没有返回值,也没有void,在类名前加上~,并且析构函数只有一个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】