C++11中委托构造函数如何使用
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,这篇文章将为大家详细讲解有关C++11中委托构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++11之前的状况构造函数多了以后,几乎必
千家信息网最后更新 2024年11月20日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安全错误
数据库的锁怎样保障安全
马拉松报名软件开发
数据库创建表需要代码吗
邵阳帮助软件开发中介
网络安全教案二年级
服务器 文件管理系统
徐州电子网络技术咨询热线
信息系统网络安全产品
TCGA数据库挖掘神器
奇安信杯网络安全攻防
中国网络技术和信息化
计算机网络技术优势
软件开发是什么开票类别
数据库查询重复名字及重复次数
查低保显示服务器错误怎么回事
管理系统数据库选题
网络安全的苦处有
江门软件开发
软件开发项目中所需资源
浙江电子网络技术包括什么
汽车仪表软件开发流程
加好友软件开发
软件开发常用单位
哪里有学网络技术
北仑软件开发项目
黑龙江专业软件开发价格
网络安全售后简历
网络安全和系统开发有什么差别
靠谱的五金切割软件开发商
访问公司服务器很卡很慢
服务器电源改20伏电压