C++新知识点:类和对象
学过python,基本差不多的东西
C++中,访问权限分为三类:
public: 类内外
protected: 类内(继承可以访问)
private: 类内(继承也不可以访问)
定义实例: 注意结尾有" ;"
class My: { public: int age; };
和struct的关系:
基本是一样,区别是默认权限struct--public;class--private
构造函数和析构函数
构造函数:
创建对象时自动调用,用于初始化参数等
定义:
My() //名称同类名 { //function }
分类:
1. 普通
2. 拷贝:传入为const 类名 &对象 ,将对象的数据属性拷贝进去,但同时不能更改原先的对象数据属性,所以加const
出现场景:
创建以旧对象的拷贝的新对象
值传递传入函数时创建拷贝对象
返回值
1. 有参
2. 无参
调用:
1. 括号法
My p1 //默认,无参
My p2(10) //有参
My p3(&p2) //拷贝
2. 显示法
My p1 = My(10)
其中右侧的My(10)为匿名函数,因为有对象却没命名,命名在左侧
3. 隐式转换
My p1 = 10
上式等价于My p1 = My(10)
构造函数默认生成:
创建类时,编译器自动生成三个函数:默认构造(空参数)、拷贝构造、析构。
当类中有定义有参构造,则编译器生成拷贝构造、析构;当类中有定义拷贝构造,则编译器不再生成其他函数。
注意:使用拷贝函数时,如使用浅拷贝,可能会出现析构函数先后释放同一内存空间的问题,应使用深拷贝避免问题。
析构函数:
销毁对象时自动调用,用于清空参数,比如类中程序员使用new开辟的堆区空间,最终会被析构函数释放
定义:
~My() //不能有参数 { //function }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通