簡體   English   中英

C ++中的對象構造

[英]Object Construction in C++

我正在使用C ++進行一個小型項目,該項目需要我創建在另一個類中編寫的自定義類的對象。 該類稱為FIRFilterModule ,它具有一個簡單的空白構造函數。

具有Java背景,我的沖動就是像這樣創建它:

class SensorInput{
public:

  FIRFilterModule firFilter;
  ...More Class Members...
  SensorInput():firFilter(FIRFilterModule()){}
...};

但是,這會以非常有用的錯誤消息“此上下文中的錯誤”進行編譯。 我有點迷茫,為什么不起作用。 令我更加困惑的是,我將代碼更改為:

class SensorInput{
public:

  FIRFilterModule firFilter;
  ...More Class Members...
  SensorInput(){}
...};

有用。

有人可以幫我理解為什么會這樣嗎?

在這種情況下,為成員字段運行默認構造函數,您無需執行任何操作。 構造函數會自動運行。 所以你可以寫

class SensorInput{
public:

  FIRFilterModule firFilter;

  SensorInput() { ... }
};

僅當需要調用具有參數或初始化POD類型的構造函數時,才需要成員初始化列表。 例如說FIRFilterModule有一個構造函數,它接受一個int 然后,您將使用成員初始化列表

SensorInput() : firFilter(42) { ... }

您發布的代碼是正確的。

也許您忘記了在聲明FIRFilterModule位置包含標頭。

否則,一切都會正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM