繁体   English   中英

在类构造函数中调用包含类的构造函数

[英]Calling a constructor of included class within class constructor

在类argList构造函数是指令

args_[0] = fileName(argv[0]);

当搜索方法fileName(...) ,结果表明它应该是fileName类的构造函数:

inline Foam::fileName::fileName(const char* str) //Construct as copy of character array.
: string(str)    //Construct as copy of character array.
{
    stripInvalid();    //Strip invalid characters from the given string.
}

两个问题:

  1. 确实是调用的类fileName的构造函数吗?
  2. 如果像这样被调用, fileName的构造函数不是静态的吗?

问候声

  1. 是的-这是fileName类的真正构造函数-没有返回值,并且方法的名称与类的名称相同。

  2. 这不是对构造函数的调用,而是对构造函数的定义(我想::会让您感到困惑):

     inline Foam::fileName::fileName(const char* str) //Construct as copy of character array. 

    这是对构造函数的调用:

     args_[0] = fileName(argv[0]); 

    C ++中没有静态构造函数。

'1。 确实是调用的类fileName的构造函数吗?

是。 之所以调用构造函数,是因为为args_ [0]分配了fileName类的新实例。

'2。 如果像这样被调用,fileName的构造函数不是静态的吗?

否。构造函数不能为静态。 这是构造对象的正确方法之一。

确实是调用的类fileName的构造函数吗?

间接地,是的。 对于类T ,表达式T(args)创建一个临时对象,并通过为参数调用合适的构造函数对其进行初始化。

在这种情况下,此构造函数与参数类型匹配,因此使用了该构造函数。

如果像这样调用fileName ,构造器不是静态的吗?

不,构造函数不能声明为静态。 它们始终可以用于初始化命名变量或类似此类的临时变量,而无需特殊声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM