我有一個C結構具有相關功能:性能C結構對C++結構/
struct StructC {
int a;
int b;
};
static inline StructC func1()
{
StructC ret;
//do something with variables ret.a and ret.b
return ret;
}
static inline void func2(StructC var)
{
//do something with variables var.a and var.b
...
}
和C++結構:
struct StructCPP {
int a;
int b;
StructCPP func3() //can also be static
{
StructCPP ret;
//do something with instance variables ret.a and ret.b
return ret;
}
void func4() //can't use static here since it operates on the instance variables
{
//do something with instance variables a and b
...
}
};
我的問題:通過這些結構來時,這是更快函數/方法?
由於在StructC上運行的C函數是靜態的,所以只有一個實例駐留在內存中,但其結構中的C++方法會發生什麼?它的方法(func3()和func4())佔用每個實例的冗餘內存,還是C++編譯器優化它只保存一個實例,所以在傳遞C++結構時,只有實例變量a和b,通過了嗎?
該函數調用這些函數更快(如果有任何差異)?:
void functionA(StructC var); //StructC as argument
void functionB(StructCPP var); //StructCPP as argument
(該程序是C和C++的混合物)
如果我沒有弄錯,我相信結構被解釋爲C++中的類。 – turnt
您傳遞_objects_,而不是_structs_。與結構關聯的方法不會被複制。如果這就是你要求的。 – stefan
關於表現,在你問之前總是測試。你有沒有嘗試看看這裏有什麼區別?另外,我認爲你對結構的理解基本上是不正確的。 –