C++中的空类,编译器默认可以产生哪些成员函数

C++中创建一个空类:
class Empty {};
默认会生成4个函数,其函数的原型如下:

public: Empty() { ... }

Empty(const Empty& rhs) { ... }

~Empty() { ... }

Empty& operator=(const Empty& rhs) { ... }

说明:1) 这些函数只有在需要调用的时候,编译器才会生成。

2) 4个函数都是public的。

3) 4个函数都是inline的(即函数定义在类的定义中的函数)。

4) 如果你显式的声明了这些函数中的任何一个函数,那么编译器将不再生成默认的函数。

比如,当遇到下列语句时,函数会被编译器生成:

Empty e1; //默认构造函数

//对象销毁时,析构函数Empty e2(e1); //

拷贝构造函数e2 = e1; //赋值运算符

另外,还存在两种默认的函数:就是取地址运算符和取地址运算符的const版本,这两个函数在《Effective C++》中没有提及。

public: Empty* operator&() { ... }

const Empty* operator&() const { ... }

这两个函数是确实存在的,正如下面的代码可以正常工作:

#include <stdio.h>class Empty {};

int main(int argc, char** argv)

{ Empty a;

const Empty *b = &a; printf("%p/n", &a); //调用取地址运算符

printf("%p/n", b); //调用const取地址运算符}

一个容易被忽略的问题:自定义的拷贝构造函数不仅会覆盖默认的拷贝构造函数,也会覆盖默认的构造函数。下面的代码是编译不过的,用户必须再显式的定义一个无参的构造函数。

class Empty {

public: Empty(const Empty& e) { }

//拷贝构造函数};

int main(int argc, char** argv){ Empty a;}

### Docker Desktop 配置国内镜像源的方法 对于希望提高Docker镜像下载速度的用户来说,配置国内镜像源是一个有效的方式。针对不同操作系统下的Docker Desktop,具体操作略有差异。 #### Mac 用户配置方法 在Mac上,为了优化Docker镜像的获取效率,可以通过调整`Docker Engine`中的设置来指定使用国内镜像源[^1]。这一步骤涉及打开Docker Desktop应用程序,导航至偏好设置内的`Docker Engine`选项卡,在JSON格式的配置文件里添加或修改`registry-mirrors`字段的内容,以指向一个更加快捷稳定的服务器地址列表。 #### Windows 用户配置指南 Windows环境下,除了能够通过相似路径访问到`Docker Engine`配置界面外,还值得注意的是默认情况下Docker会将数据存放在系统盘(C盘),即位于`C:\Users\<用户名>\AppData\Local\Docker\wsl\[2]`这样的目录下。当考虑更改镜像源时同样需编辑上述提到的引擎参数部分,确保加入了合适的中国区加速链接[^2]。 #### Linux 或其他平台通用做法 无论是在哪种平台上运行Docker Desktop,核心的操作都是围绕着向其内部的JSON配置增加一组或多组可用作代理服务端口的URL字符串实现本地化资源加载提速的目的。下面给出了一段适用于大多数情况的标准写法: ```json { "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ] } ``` 这段代码展示了如何利用阿里云、网易以及中科大提供的公共镜像站作为备选方案之一[^3]。当然还有更多可信赖的选择可供参考,比如腾讯云所提供的实例[^4]或是DaoCloud等第三方服务商所维护的服务节点[^5]。 完成以上任意一种方式后记得点击应用按钮使新设定生效,并重启软件让改动正式起作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值