首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何同时创建一个具有两个或多个构造函数初始化的对象

如何同时创建一个具有两个或多个构造函数初始化的对象
EN

Stack Overflow用户
提问于 2019-10-25 02:05:22
回答 2查看 94关注 0票数 0

如何在不更改所有重载构造函数和其他现有代码的情况下,同时创建一个具有两个或多个构造函数初始化的对象?(如果没有,至少要改变一下)

代码语言:javascript
运行
复制
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); // ?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-25 02:44:11

C++不能在语言级别上表示两阶段构造的概念.如果一个对象的构造函数完成,那么它就是一个活动对象。这意味着它的所有子对象都已经被构造(或者初始化了或者没有初始化)。您可以在它的存储中创建一个新对象,但这会覆盖旧的对象,从而导致它结束其生命周期。

可以让构造函数将主构造推迟到另一个构造函数。但是在这样做时,其他构造函数将正确地构造对象。即使如此,这也是一个实现细节;它并不会出现在对象的接口中。

您可以在构造函数中初始化对象的const部分,并具有一个函数来初始化其他子对象。但就语言而言,这与操纵对象成员的任何其他函数调用没有任何不同。

票数 0
EN

Stack Overflow用户

发布于 2019-10-25 02:26:01

您不能在C++中这样做。只需创建一个包含4个参数的构造函数,或者在类中添加Setter并设置值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58551264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档