我获得了一个c ++ main并且必须对其进行编码才能正常工作。
我在理解代码时遇到了一些麻烦,因为我对cpp有点新鲜。
这是代码
int main(int argc, char *argv[]) {
Class::setAtribute("string");
Class(Class::CONSTANT) << "starting up...";
}
有些问题:
第一行如何在没有变量的情况下工作?它是静态的吗?
第二行对我来说真的很奇怪,我能说的是一个构造函数,它接受一个类constante然后以某种方式打印出来?
如果有人能解释我这段代码,那就太棒了!
提前致谢。
答案 0 :(得分:2)
第一行如何在没有变量的情况下工作?它是静态的吗?
Class::setAtribute()
必须是类Class
中的静态函数。静态函数不需要类(对象)的实例。
第二行对我来说真的很奇怪,我能搞清楚的是一个构造函数,它接受一个类constante然后以某种方式打印出来?
是的,它构造了Class
的实例,将Class::CONSTANT
作为Class
构造函数的参数传递。要编译Class(Class::CONSTANT) << "starting up...";
,必须以:
operator<<
作为Class
(DavidRodríguez - dribeas)的成员函数:
<some_return_value_type> Class::operator<<(char const*);
或作为一个独立的功能:
<some_return_value_type> operator<<(Class const&, char const*);
或:
<some_return_value_type> operator<<(Class const&, std::string const&);
或者,在C ++ 11中:
<some_return_value_type> operator<<(Class&&, char const*);
事实上,第二个参数可以是任何可以从字符串文字char const[]
构造的参数。或者,Class
可以将转化运算符设置为std::ostream&
,以便选择std::ostream& std::operator<<(std::ostream&, char const*)
。在命名空间中查看Class
定义和独立函数必须得出明确的答案。
答案 1 :(得分:0)
第一行是声明main
函数,这是程序开始运行的地方。如果您习惯使用Java或C#,是的,它实际上是静态的;它与任何类的实例都没有关联。请记住,在C ++中,您可以拥有甚至不是类的 part 的独立函数。 main
就是其中之一。
第二行是在名为setAtribute
的类上调用名为Class
的静态方法,并向其传递一个字符串参数。目前尚不清楚该行的目的是什么,但就其工作原理而言,它只是一个普通的函数调用,而不是构造函数。
编辑:我刚刚意识到当你说“第一线”时,你可能实际上意味着我称之为“第二线”的线。在那种情况下,你也在询问第三行。是的,那是构建一个类的临时实例,然后调用它的<<
运算符(可能是打印一些东西)。
答案 2 :(得分:0)
第一行如何在没有变量的情况下工作?它是静态的吗?
最有可能的情况是,您应该检查标题以查找Class
的定义并进行验证,但我确信这是一个静态方法调用。
第二行对我来说真的很奇怪,我能搞清楚的是一个构造函数,它接受一个类constante然后以某种方式打印出来?
你有这种感觉。最有可能(再次检查源)创建一个用Class
初始化的Class::CONSTANT
类型的临时对象(有一个与静态成员Class:CONSTANT
的类型匹配的构造函数)。然后在那个临时调用operator<<
。在这种特殊情况下,operator<<
最有可能被实现为Class
的成员函数,该函数可以使用const char*
作为参数或者可以从中转换的内容,例如std::string
。< / p>