Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中类对象双向初始化的实现+;_C++_Qt_Api Design - Fatal编程技术网

C++ C+中类对象双向初始化的实现+;

C++ C+中类对象双向初始化的实现+;,c++,qt,api-design,C++,Qt,Api Design,在浏览QtaPI时,我突然注意到一些函数允许用户以两种方式初始化类对象。例如: QReqExp类: 它可以一次初始化,如下所示: QRegExp regExp("*.wk?", Qt::CaseInsensitive, QRegExp::Wildcard); QRegExp regExp; regExp.setPattern("*.wk?"); regExp.setCaseSensitivity(Qt::CaseInsensitive); regExp.setPatternSyntax(QRe

在浏览QtaPI时,我突然注意到一些函数允许用户以两种方式初始化类对象。例如:
QReqExp类:
它可以一次初始化,如下所示:

QRegExp regExp("*.wk?", Qt::CaseInsensitive, QRegExp::Wildcard);
QRegExp regExp;
regExp.setPattern("*.wk?");
regExp.setCaseSensitivity(Qt::CaseInsensitive);
regExp.setPatternSyntax(QRegExp::Wildcard);
或者可以像这样一步一步地初始化:

QRegExp regExp("*.wk?", Qt::CaseInsensitive, QRegExp::Wildcard);
QRegExp regExp;
regExp.setPattern("*.wk?");
regExp.setCaseSensitivity(Qt::CaseInsensitive);
regExp.setPatternSyntax(QRegExp::Wildcard);

我想知道这个系统是如何实现的??我的意思是,在用户明确设置它们之前,类对象集的属性是否为默认值?

,您需要查看基本C++。 第一条语句
QRegExp regExp(“*.wk?”,Qt::不区分大小写,QRegExp::通配符)使用接受参数并使用给定参数自动初始化类对象成员的。给出了该特定构造函数的文档

与Qt框架中定义的大多数其他类一样,
QRegExp
类具有重载构造函数。这结合了构造函数和函数重载的概念

在第二个代码块中,
QRegExp regExp
初始化
QRegExp
对象而不传递任何参数,它所做的只是为其所有成员分配内存,称为默认构造函数。在本例中调用的构造函数


然后为类中的每个成员调用特定的集合函数并初始化它们的值。请记住,这些函数也可以在第一种方法中调用,以修改已分配的数据,并被用来专门为这些特定成员分配数据。

,你需要查看基本C++。
QRegExp regExp("*.wk?", Qt::CaseInsensitive, QRegExp::Wildcard);
第一条语句
QRegExp regExp(“*.wk?”,Qt::不区分大小写,QRegExp::通配符)使用接受参数并使用给定参数自动初始化类对象成员的。给出了该特定构造函数的文档

与Qt框架中定义的大多数其他类一样,
QRegExp
类具有重载构造函数。这结合了构造函数和函数重载的概念

在第二个代码块中,
QRegExp regExp
初始化
QRegExp
对象而不传递任何参数,它所做的只是为其所有成员分配内存,称为默认构造函数。在本例中调用的构造函数

然后为类中的每个成员调用特定的集合函数并初始化它们的值。请记住,这些函数也可以在第一种方法中调用,以修改已分配的数据,并被用于专门为这些特定成员分配数据

QRegExp regExp("*.wk?", Qt::CaseInsensitive, QRegExp::Wildcard);
使用上面的语句,将使用类构造函数之一创建一个对象,如下所示:-

  public:
    QRegExp(String param1, SomeType cs, SomeType wildcard)
    {
       this.param1 = param1;
       this.cs = cs;
       this.wildcard = wildcard;
     }
在第二种情况下,它调用默认构造函数,并使用setter方法设置值

 QRegExp regExp;
上述语句将调用默认构造函数,如下所示:-

 public:
   QRegExp():param1(some value),cs(some value),wildcard(some value)
   {
   }    
QRegExp还具有以下setter方法:-

 public:
    void setPattern(String String param1)
    {
        this.param = param1;
    }

 regExp.setPattern("*.wk?");// here you are calling the above method
对于setter方法的其余部分,想象一下它们也像上面那样实现

希望这会有所帮助

使用上面的语句,将使用类构造函数之一创建一个对象,如下所示:-

  public:
    QRegExp(String param1, SomeType cs, SomeType wildcard)
    {
       this.param1 = param1;
       this.cs = cs;
       this.wildcard = wildcard;
     }
在第二种情况下,它调用默认构造函数,并使用setter方法设置值

 QRegExp regExp;
上述语句将调用默认构造函数,如下所示:-

 public:
   QRegExp():param1(some value),cs(some value),wildcard(some value)
   {
   }    
QRegExp还具有以下setter方法:-

 public:
    void setPattern(String String param1)
    {
        this.param = param1;
    }

 regExp.setPattern("*.wk?");// here you are calling the above method
对于setter方法的其余部分,想象一下它们也像上面那样实现


希望这会有所帮助

方便代码浏览器,可以单击对象到它们的实现并跟踪实现。可以在C++中没有参数和构造函数的构造函数。所以您可以创建不带参数或带参数的对象。在无参数中,您将通过对API的外部调用来设置参数。-方便代码浏览器,您可以单击对象以实现它们的实现并跟踪实现。可以在C++中构造具有不带参数的构造函数的参数和构造函数。所以您可以创建不带参数或带参数的对象。在无参数中,您将通过对API的外部调用来设置参数。