我是一名C程序員,想要學習C++ 11,並且遇到了一些我不明白的東西。從我所知道的,下面的問題是值初始化和直接初始化之間的區別。 下面的代碼片段使用Visual Studio不能編譯: class TestClass {
int _val;
std::string _msg;
public:
TestClass(int, std::string);
voi
可能重複: non-copyable objects and value initialization: g++ vs msvc Value-initializing an automatic object? 考慮下面的語句: 這不是真的有可能值初始化自動目的。 這句話是真的嗎?我看到在這樣做沒有問題: int main()
{
int i = int();
}
我正在閱讀「加速C++」一書的第8章。 8.3節是關於輸入和輸出迭代器: vector<int> v; // read ints from the standard input and append them to v
copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(v));
[...] The
我試着去了解@bolov的第一接受答案的問題Deleted default constructor. Objects can still be created... sometimes [1] 好像我發現有一個錯誤,所以它弄亂整個解釋。 @bolov解釋了爲什麼這個代碼成功地C++ 11編譯: 方案A struct foo {
foo() = delete;
};
// All b
我刷新我的價值初始化與默認初始化的理解,和整個this傳來: struct C {
int x;
int y;
C() { }
};
int main() {
C c = C();
}
顯然,這是UB因爲 在C()的情況下,有一個構造函數能夠對 初始化x和y成員,因此不會進行初始化。嘗試將C()複製到c因此會導致未定義的行爲。 我想我明白爲什麼,