在类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
的构造函数如果被调用则不是静态的
像这样?问候 streight
答案 0 :(得分:3)
是的 - 这是fileName
类的真正构造函数 - 没有返回值,方法的名称与类的名称相同。
这不是对构造函数的调用,而是构造函数的定义(我猜::
让你感到困惑):
inline Foam::fileName::fileName(const char* str) //Construct as copy of character array.
这是对构造函数的调用:
args_[0] = fileName(argv[0]);
C ++中没有静态构造函数。
答案 1 :(得分:3)
“1。它真的是名为fileName的构造函数吗?
是。调用构造函数是因为它为args_ [0]分配了一个fileName类的新实例。
“2。如果像这样调用它,那么fileName的构造函数是不是静态的?
没有。构造函数不能是静态的。这是构造对象的正确方法之一。
答案 2 :(得分:2)
它真的是类
fileName
的构造函数吗?
间接地,是的。对于类T
,表达式T(args)
创建一个临时对象,并通过为参数调用合适的构造函数来初始化它。
在这种情况下,此构造函数匹配参数类型,因此使用的是。
fileName
的构造函数是不是静态的,如果像这样调用它?
不,构造函数不能声明为static。它们总是可以用来初始化命名变量或像这样的临时变量,没有特殊的声明。