【发布时间】:2019-10-25 02:05:22
【问题描述】:
我们如何一次创建一个具有两个或多个构造函数初始化的对象, 不更改所有重载构造函数和其他现有代码? (或者如果根本没有,至少尽可能地改变)
class valuation {
public:
valuation(const int s) : pos(s) {};
valuation(int a,int b,int c) : j(a),k(b),l(c) {};
private:
const int pos;
int j,k,l;
main(){
int a=1,b=2,c=3, v=7;
// how to set pos=7 j=1 k=2 l=3 once, below just illustration
valuation O(v) // ?
valuation O(a,b,c); // ?
谢谢
【问题讨论】:
-
为什么有两个构造函数,都没有完全初始化对象?
-
不幸的是,C++ 不能以这种方式工作。如果您需要以这种方式构造对象,则必须创建另一个构造函数。
-
变量O的多重声明
-
为什么不创建一个包含所有 4 个参数的构造函数?
-
鉴于您之前的问题,我认为您想要的一些东西表明存在 XY 问题。您正在尝试做某事,并且您认为两次构造对象是做那件事的方法。几乎可以肯定不是,对于您要完成的工作,有更好的解决方案。