最近我见过如下例子:
#include <iostream>
class Foo {
public:
int bar;
Foo(int num): bar(num) {};
};
int main(void) {
std::cout << Foo(42).bar << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这奇怪: bar(num)意味着什么?它似乎初始化成员变量,但我以前从未见过这种语法.它看起来像一个函数/构造函数调用,但对于一个int?对我没有任何意义.也许有人可以启发我.而且,顺便说一下,还有其他类似的深奥语言功能,你永远不会在一本普通的C++书中找到它吗?
假设我有一个对象:
public class A
{
private int m_a;
private int m_b;
A(int a, int b)
{
m_a = a;
m_b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
这可以完成工作,但我有一个朦胧的记忆被告知它不必要地将整数复制到参数a和b中,然后复制到m_a和m_b中.有没有办法定义类,使参数直接传递给它们的成员对应物?
请注意,我不想讨论C#Object Constructor - 简写属性语法,因为onus是在使用该类的人.
当然,我可能完全错了,也许编译器会消除这些琐事,因此我应该乐意接受任何一种方式的教育.