[英]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.
}
两个问题:
fileName
的构造函数吗? fileName
的构造函数不是静态的吗? 问候声
是的-这是fileName
类的真正构造函数-没有返回值,并且方法的名称与类的名称相同。
这不是对构造函数的调用,而是对构造函数的定义(我想::
会让您感到困惑):
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.