【问题标题】:Can a function inherit arguments?函数可以继承参数吗?
【发布时间】:2014-08-29 11:13:43
【问题描述】:

在 KinFu remake 的源代码中,我发现了以下结构:

kfusion::OpenNISource::OpenNISource() : depth_focal_length_VGA (0.f), baseline (0.f),
shadow_value (0), no_sample_value (0), pixelSize (0.0), max_depth (0) {}

: 后面的参数在类 kfusion::OpenNISource 中声明。函数 OpenNISource() 也在此类中声明。由于我是 C++ 新手,我认为该函数继承并声明了变量...(?)

那么下面的代码是否会将变量(foo, bar)和值(0, 1.0f)添加到函数中?

class A 
{
  public:
    fn ();
    fn (int qux);

    int foo;
    float bar;
};


A::fn() : foo(0), bar(1.0f) {} 

如果是这样,这些变量是否也会添加到 fn(int qux) 中??

【问题讨论】:

  • 只有构造函数才能做到这一点

标签: c++ function inheritance


【解决方案1】:

因为这个函数和类同名,所以是类的构造函数,在类实例化时自动调用。

冒号后面的变量列表是初始化列表,用来给类的成员变量赋初值。

您只能使用构造函数来执行此操作,而不仅仅是任何函数,因此您的代码将无法工作。为此,您必须调用函数“A”。

【讨论】:

  • 你应该删除那个“via new”,我们已经看到了足够多的动态分配滥用:p
猜你喜欢
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
相关资源
最近更新 更多