C++11中委托构造函数如何使用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关C++11中委托构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++11之前的状况构造函数多了以后,几乎必
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
某个对象数据库丢失或
北京隆正软件开发公司吗
数据库素材图片
宽带一直显示正在连接服务器
甘肃明星软件开发有限公司
服务器正常运行需要人为控制吗
数据库损坏有哪些情况
网络安全法第12
检查服务器是否正常工作
数据库公司怎么样
杭州应用软件开发要多少钱
服务器安全狗恢复设置
网络技术企业简介范文
互联网十大科技人才
成都全国软件开发培训班
国内服务器域名弄什么比较好
网络安全环境问题
智慧校园无线网络安全
二线城市软件开发排名
医学数据库信息
苹果手机密码验证连接服务器错误
某个对象数据库丢失或
贵州软件开发价格
数据库触发器事件在哪看
asp web 服务器
mt4使用多大云服务器
服务器如何设置raid5
rust服务器选择
大学校园网络安全教育活动记录
审计局网络安全计划