这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C++ 11时,成语是否会改变?
虽然在许多地方已经提到过,但我们没有任何单一的"它是什么"问题和答案,所以在这里.以下是前面提到的地方的部分列表:
c++ c++-faq copy-constructor assignment-operator copy-and-swap
假设我有一个名为Foo的课程.Foo没有默认构造函数.它有一个构造函数Foo(int x,float y).
Bar是一个容器类.它包含一个包含Foo实例的向量.
Bar::Bar(int numberOfFoos, int x, float y) {
foovector.resize (numberOfFoos);
for(int i = 0; i < numberOfFoos; i++) {
**read below**
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,我想调用Foo的构造函数并将参数int x和float y传递给它.Foo的构造函数根据x和y的值做不同的事情.
假设Foo有一个默认构造函数,调整大小矢量函数究竟做了什么?它是否只是在不调用默认构造函数的情况下调整向量的大小?换句话说,是为Foo类型的n个元素保留的空间,但是它们没有被初始化为任何东西?
如果它没有,如果在这种情况下怎么办?
在for循环中我想以这种方式初始化每个Foo元素:
foovector[i].Foo(int x, float y);
Run Code Online (Sandbox Code Playgroud)
但是我不能以这种方式使用点访问运算符来调用构造函数.我现在甚至都不知道构造函数是否已经被resize函数调用过.
问题是,我该怎么办?
关于类向量的另一个相关问题:
在Foo中有一个包含浮点数的向量.float x参数是它应该保持的浮点数.Foo的构造函数有一条线
arrayofFloats.resize (x);
Run Code Online (Sandbox Code Playgroud)
但这意味着计算机事先并不知道Foo的大小.每个foo可以有不同的大小.它不会导致Foo的矢量问题吗?如果每个Foo可以有不同的大小,如何声明特定大小的向量?
抱歉英语不好,我希望它已经足够清楚了.
谢谢.