gpt4 book ai didi

c++ - 在 C++ 中使用 Initializer 列表进行抽象类型初始化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:43 25 4
gpt4 key购买 nike

我开始阅读 Bjarne Struoustrup 的“The C++ Programming Language - 4th Edition”一书,发现以下示例有点令人困惑(抽象类型 - 第 66 页):

class Container {
public:
virtual double& operator[](int) = 0; // pure virtual function
virtual int size() const = 0; // const member function (§3.2.1.1)
virtual ~Container() {} // destructor (§3.2.1.2)
};

class Vector_container : public Container { // Vector_container implements Container
Vector v;
public:
Vector_container(int s) : v(s) { } // Vector of s elements
~Vector_container() {}
double& operator[](int i) { return v[i]; }
int size() const { return v.size(); }
};

客户端代码:

void use(Container& c)
{
const int sz = c.size();
for (int i=0; i!=sz; ++i)
cout << c[i] << '\n';
}

void g()
{
Vector_container vc {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
use(vc);
}

我们在Vector_container的类声明中是不是漏掉了下面的构造函数?

Vector_container(std::initializer_list<double> s) : v(s) { } // Vector of s elements

如果我在这里有任何误解,请纠正我。

最佳答案

Are we not missing the following constructor in the class declaration of Vector_container?

Vector_container(std::initializer_list<double> s) : v(s) { } // Vector of s elements

当然你是对的。

LIVE

error: no matching constructor for initialization of 'Vector_container'
Vector_container vc {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

LIVE with ctor taking initializer_list as parameter

关于c++ - 在 C++ 中使用 Initializer 列表进行抽象类型初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35335167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com