构造函数
一、inline(内联)函数
什么情况下产生inline:函数在class的本体里面定义,就形成一种inline。在外头定义就不是inline。但是,是不是最后真的变成inline function由编译器决定。
inline有什么好处:快。有特点而没有缺点。尽量都写成inline那最好。
2-2不在本体内定义,可以在前面加上inline。
二、access level(访问级别)
数据部分为private;函数看情况,被外界调用用public。
三、constructor(ctor,构造函数)
初值列是C++特殊写法,是一种很好的写法。
默认值的意思是,如果在创建时没有指明,就用默认值。
构造函数一定要跟类的名称相同。没有返回值类型。
//这部分代码等价于
//可以这样写,但是效率差一些
complex (double r = 0, double i = 0) { re = r; im = i; }
三种创建对象的方式:
不带指针的class多半不用写析构函数。
四、ctor(构造函数)可以有很多个——overloading(重载)
例如,real()这个函数,同名但是参数不同,编译后给编译器看到的名称是不一样的,所以可以重载。
重载常常发生在构造函数上,但是由于目前拥有的这个构造函数已经有初始值了,但是还是可以重载写出其他的构造函数。
目前构造函数的1跟2两者是冲突的,因为第一个函数有默认参数,当创建c1的时候,没有参数,那么2(没有参数,符合c1要求)是候选人。complex类里有1,虽然有参数,但是有默认值,1也能被调用。编译器不知道该调用1还是2,不可以这样写。
五、ctors放在private区
经典写法:单例模式
该例子写了两个写法的构造函数。外界只能用一份,调用时要用getInstance函数来创建。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现