-1
#include <iostream>
class My
{
public:
My(int &val) : m_val(val)
{
std::cout << "int& constructor" << std::endl;
Print();
}
My(const My& my) : m_val(my.m_val)
{
std::cout << "copy constructor" << std::endl;
Print();
}
My &operator=(const My&)
{
std::cout << "operator =" << std::endl;
Print();
return *this;
}
void Print()
{
std::cout << "m_val ptr = " << &m_val << std::endl;
std::cout << "m_val = " << m_val << std::endl;
}
int &m_val;
};
int main() {
My my = my;
return 0;
}
這個C++代碼是否正確?當這段代碼在gcc和msvc上編譯時,我感到很驚訝。這一計劃的這個C++代碼是否正確?
輸出是:
拷貝構造函數
m_val PTR = 0xb74a36e5
m_val = 1528349827
UPD:我關心的線
My my = my;
你爲什麼要問?有關它的事情會讓你覺得它*不是*? – 0x499602D2
你是什麼意思,「正確」?編譯並運行的代碼並不意味着它是「正確的」...'system('rm -rf /')'會編譯/執行「correctLy」,但並不是很多人會認爲這是一個「正確」的程序。 –
我想你需要一個預導師 –