#include <iostream>
class dummy{
public:
constexpr
dummy(int one, int two) noexcept
:x(one),y(two){
}
constexpr int getX() noexcept{
return x;
}
constexpr int gety() noexcept{
return y;
}
constexpr int operator+(const dummy& asd){
return (this->getX() + asd.getX() + this->gety() + asd.gety()) ;
}
private:
int x;
int y;
};
int main(){
constexpr dummy d1(2,4);
constexpr dummy d2(2,4);
int rand = 10;
std::cout<<d1+d2<<std::endl;
return 0;
}
根據我的理解,如果函數聲明爲constexpr
,並且如果使用constexpr
值,則可以在編譯時評估該函數。評價cout是否有constexpr值?
問題:
從這一行,因爲std::cout<<d1+d2<<std::endl;
是d1 + d2
一個constexpr和cout算不算。 d1+d2
將在編譯時進行評估?它會發生什麼事cout
呢?我很擔心裏面發生了什麼。
基本上,結果相當於'的std :: COUT << 12 <<的std :: ENDL;'可以在編譯時被計算D1 + d2'的'的值,但當然字符'」 1'和'2'只能在運行時寫入標準輸出。 –