- 143 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:59:34 ]
- #include <iostream>
#include <vector> class Vector { public: Vector(size_t size) : m_array(size) { } void output() const { for(std::vector<int>::const_iterator it = m_array.begin(); it != m_array.end(); ++it) { std::cout << *it << ' '; } std::cout << std::endl; } private: std::vector<int> m_array; }; void Foo(const Vector& v) { v.output(); } int main() { Foo(5); ←←←←←←← } これが直感的な挙動ではないことは分かってもらえると思う。 でも、コンパイル通るし、正常に動く。 explicit つけるとこういう時にコンパイルエラーにできる。 それでも Foo(Vector(5)); なら可だが、これは問題ないと感じてくれると思う。
|

|