gpt4 book ai didi

c++ - 我正在从 C 迁移到 C++,但我没有创建类

转载 作者:太空狗 更新时间:2023-10-29 23:35:06 31 4
gpt4 key购买 nike

我是一名 C 开发人员,我决定将 C++ 作为主要语言来扩大我的视野。从“The C++ Programming Language”学习我看到了这个创建类的例子:

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;
};

而且我不会使用 sz{s} { }

我们为什么要使用 {}?为什么行尾没有;

最佳答案

因为惰性缩进。让我们写得更清楚:

class Vector
{
private:
double* elem;
int sz;
public:
Vector(int s)
: elem{new double[s]}
, sz{s}
{
// ctor body
}

// More class members
};

看到了吗?您神秘的 {} 只是构造函数的主体,它只是一个函数主体,并且与在 C 中一样,函数不以 ; 结尾。

:开头的怪异行是初始化列表,成员变量和基类在这里被初始化,也就是你将参数写入它们的构造函数的地方。 sz{s} 只是此列表中的第二个元素。

关于c++ - 我正在从 C 迁移到 C++,但我没有创建类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890068/

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