C++11中委托构造函数如何使用
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章将为大家详细讲解有关C++11中委托构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++11之前的状况构造函数多了以后,几乎必
千家信息网最后更新 2025年02月19日C++11中委托构造函数如何使用
这篇文章将为大家详细讲解有关C++11中委托构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
C++11之前的状况
构造函数多了以后,几乎必然地会出现代码重复的情况,为了避免这种情况,往往需要另外编写一个初始化函数。例如下面的Rect类:
struct Point{
int x;
int y;
};
struct Rect{
Rect(){
init(0, 0, 0, 0, 0, 0);
}
Rect(int l, int t, int r, int b){
init(l, t, r, b, lc, fc, 0, 0);
}
Rect(int l, int t, int r, int b,
int lc, int fc){
init(l, t, r, b, lc, fc);
}
Rect(Point topleft, Point bottomright){
init(topleft.x, topleft.y,
bottomright.x, bottomright.y,
0, 0);
}
init(int l, int t, int r, int b,
int lc, int fc){
left = l; top = t;
right = r; bottom = b;
line_color = lc;
fill_color = fc;
//do something else...
}
int left;
int top;
int right;
int bottom;
int line_color;
int fill_color;
};
数据成员初始化之后要进行某些其他的工作,而这些工作又是每种构造方式都必须的,所以另外准备了一个init函数供各个构造函数调用。
这种方式确实避免了代码重复,但是有两个问题:
没有办法不重复地使用成员初始化列表
必须另外编写一个初始化函数。
C++11的解决方案
C++11扩展了构造函数的功能,增加了委托构造函数的概念,使得一个构造函数可以委托其他构造函数完成工作。使用委托构造函数以后,前面的代码变成下面这样:
struct Point{
int x;
int y;
};
struct Rect{
Rect()
:Rect(0, 0, 0, 0, 0, 0)
{
}
Rect(int l, int t, int r, int b)
:Rect(l, t, r, b, 0, 0)
{
}
Rect(Point topleft, Point bottomright)
:Rect(topleft.x, topleft.y,
bottomright.x, bottomright.y,
0, 0)
{
}
Rect(int l, int t, int r, int b,
int lc, int fc)
:left(l), top(t), right(r),bottom(b),
line_color(lc), fill_color(fc)
{
//do something else...
}
int left;
int top;
int right;
int bottom;
int line_color;
int fill_color;
};
关于C++11中委托构造函数如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
函数
代码
委托
工作
中委
内容
情况
成员
文章
方式
更多
知识
篇文章
不错
两个
办法
功能
又是
必然
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
自贡网络安全工作研讨会
石油公司服务器设备安全制度
魔兽世界数据库1.12
安卓软件开发的3大步骤
ftp服务器应该大写还是小写
网络安全显示开放
商品数据库下载
网络安全法高分答题攻略
深圳网络技术有限公司笔试题目
中国电信里机房里的服务器
兰州网络安全保护工作大队
手机端信息管理软件开发
数据库 性能要求
大多数软件开发项目都采用
浙江省万朋网络技术
家用服务器的安全架设
网络安全教育培训方案2020
通信网络技术中fr指
mvvm中数据库是那一层
数据库应用与设计答案
服务器的光纤线指示灯不闪
我的世界如何防止服务器炸图
天津游爱网络技术有限公司
二级联动筛选数据库
徐州市网络安全文件
怎么打开服务器iis管理器
洛阳变压器万谦网络技术支持
江西银行软件开发怎么样
天殇网络技术团队
delphi看图软件开发