[英]Does RVO optimisation happens when a copy constructor is not defined for a class?
[英]When does a class not contain a constructor?
我是C ++的新手,但對其他語言有一般的了解。 最近我看過一些關於C ++的教程,我有時看到的類沒有自己的構造函數,甚至沒有className();
。 這可能也存在於其他語言中,但我以前從未見過它。 我不認為我之前已經看過它們,所以我的問題是:它們適用於什么? 他們是什么? 我試過谷歌搜索這個,但我不知道它的名字..'無構造類'並沒有給我太多。
沒有構造函數,是否可以實例化它? 或者它更像是一個靜態的東西? 如果我有一個包含整數但沒有構造函數的類,我可以去int i = myClass.int;
或類似的東西? 你如何訪問無構造函數的類?
如果沒有顯式聲明構造函數,那么編譯器會為您提供零參數構造函數。 *
所以這段代碼:
class Foo {
};
與此代碼相同:
class Foo {
public:
Foo() {};
};
如果沒有指定構造函數,則編譯器會為您生成默認構造函數(不帶參數的構造函數和復制構造函數)。 所以沒有無構造類的東西。 您可以使構造函數無法訪問,以控制何時以及如何創建類的實例,但這是一個不同的故事。
沒有構造函數的類是實現接口的好模型。
許多接口由方法組成,沒有數據成員,因此無需構建。
class Field_Interface
{
public:
// Every field has a name.
virtual const std::string& get_field_name(void) const = 0;
// Every field must be able to return its value as a string
virtual std::string get_value_as_string(void) const = 0;
};
上面的類被稱為抽象類。 它不是要有任何功能,而是要定義一個接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.