相关疑难解决方法(0)

构造函数中这个奇怪的冒号成员(":")语法是什么?

最近我见过如下例子:

#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++书中找到它吗?

c++ syntax constructor c++-faq ctor-initializer

325
推荐指数
11
解决办法
10万
查看次数

用于将参数直接传递给成员的构造函数语法

假设我有一个对象:

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是在使用该类的人.

当然,我可能完全错了,也许编译器会消除这些琐事,因此我应该乐意接受任何一种方式的教育.

c# syntax constructor

1
推荐指数
1
解决办法
122
查看次数

标签 统计

constructor ×2

syntax ×2

c# ×1

c++ ×1

c++-faq ×1

ctor-initializer ×1