我可以帮助解释以下代码吗?
#include <iostream>
class Vector {
private:
double∗ elem; // pointer to the elements
int sz; // the number of elements
public:
Vector(int s) :elem{new double[s]}, sz{s} { }
double& operator[](int i) { return elem[i]; }
int size() { return sz; }
};
我正在努力提高我的C ++知识,但这种语法对我来说似乎很新鲜。
更具体地说,public
下的代码。
答案 0 :(得分:4)
可能它是新的C ++ 11初始化列表让您感到困惑,您现在可以用大括号{}
初始化变量。例如:
int i{42};
std::vector<int> v{1, 2, 3, 4};
代码中的其他所有内容在C ++ 11之前看起来非常标准
答案 1 :(得分:0)
Vector(int s)
定义了一个构造函数 - 一个在创建对象时调用的特殊方法。
:elem{new double[s]}, sz{s}
是初始化列表 - 它初始化对象的字段。整个部分:
Vector(int s):elem{new double[s]}, sz{s} {}
与
相同Vector(int s) {
elem = new double[s];
sz = s;
}
但是,初始化列表可用于初始化常量和引用。
答案 2 :(得分:0)
Vector(int s) :elem{new double[s]}, sz{s} { }
它是构造函数。它需要一个int参数来实例化。
elem{new double[s]}, sz{s} { }
本部分介绍如何启动成员变量。一个名为elem的数组类型。 emem有“s”长度数组。 sz设为“s”。
double& operator[](int i) { return elem[i]; }
这部分是为了按元素索引进行访问。
Vector v(1);
return v[0]; // <= return double reference
我将分享一个例子。这是由Bjarne Stroustrup撰写的C ++编程语言(第4版)中介绍的
#include <iostream>
using namespace std;
class Vector{
public:
Vector(int s) :elem{ new double[s]}, sz{s} {}
double& operator[](int i) { return elem[i]; }
int size() { return sz; }
private:
double* elem;
int sz;
};
double read_and_sum(int s)
{
Vector v(s);
for (int i=0; i!=v.size(); ++i)
cin >> v[i];
double sum = 0;
for (int i=0; i!=v.size(); ++i)
sum += v[i];
return sum;
}
int main() {
int sum = read_and_sum(3);
cout << sum << endl;
}