c – 在构造函数中组织初始化列表的更好方法

c – 在构造函数中组织初始化列表的更好方法,第1张

概述有时需要在初始化const成员或没有默认构造函数之前对类构造函数参数进行一些处理. 例如,在Java中我可以这样做(不要问为什么,这只是一个例子): class A{ public A(int area, float aspectRatio) { int w = foo(area, aspectRatio); int h = bar(area, aspec 有时需要在初始化const成员或没有默认构造函数之前对类构造函数参数进行一些处理.

例如,在Java中我可以这样做(不要问为什么,这只是一个例子):

class A{    public A(int area,float aspectRatio) {        int w = foo(area,aspectRatio);        int h = bar(area,aspectRatio);        image = new Image(w,h);    }    private final Image image;}

在C中也是如此

class A{public:    A(int area,float aspectRatio)         : image(foo(area,aspectRatio),bar(area,aspectRatio))    {    }private:    const Image image;}

随着更多成员需要复杂的初始化,初始化列表变得越来越可怕.有没有解决这个问题的方法?

UPD 1:
如果该成员没有复制构造函数该怎么办?只需在函数中提取函数的每个参数的计算结果?

解决方法 为它写一个静态成员函数:

class A{public:    A(int area,float aspectRatio)         : image(initimage(area,aspectRatio))    {    }private:    const Image image;    static Image initimage(int area,aspectRatio);        return Image(w,h);    }};
总结

以上是内存溢出为你收集整理的c – 在构造函数中组织初始化列表的更好方法全部内容,希望文章能够帮你解决c – 在构造函数中组织初始化列表的更好方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存