c – 在构造函数中组织初始化列表的更好方法
发布时间:2020-12-16 10:06:34 所属栏目:百科 来源:网络整理
导读:有时需要在初始化const成员或没有默认构造函数之前对类构造函数参数进行一些处理. 例如,在Java中我可以这样做(不要问为什么,这只是一个例子): class A{ public A(int area,float aspectRatio) { int w = foo(area,aspectRatio); int h = bar(area,aspectRat
有时需要在初始化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); } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |