gpt4 book ai didi

c++ - 这个结构试图做什么?

转载 作者:太空狗 更新时间:2023-10-29 23:36:53 24 4
gpt4 key购买 nike

在下面的C++代码中:

struct Features {
int F1;
int F2;
int F3;
int F4;
Features(int F1,int F2,int F3,int F4)
: F1(F1), F2(F2), F3(F3), F4(F4) { }
};

这部分是什么意思?

Features(int F1,int F2,int F3,int F4)
: F1(F1), F2(F2), F3(F3), F4(F4) { }

谢谢。

最佳答案

它正在使用构造函数的初始化列表初始化成员变量。如果构造函数参数的名称与数据成员的名称不同会更清楚:

Features(int a,int b,int c,int d)
: F1(a), F2(b), F3(c), F4(d) { }

为数据成员制定一些命名约定是很有用的,这样它们就很容易被识别并与代码中的局部变量区分开来。示例是前缀 m_ 或使用尾随 _:

struct Features {
int m_f1;
int m_f2;
int m_3f;
int m_f4;
Features(int f1,int f2,int f3,int f4)
: m_f1(f1), m_f2(f2), m_f3(f3), m_f4(f4) { }
};

这两个构造函数都可以这样使用:

Features f(11,22,33,44);
std::cout << f.m_f1 << "\n"; // prints 11
std::cout << f.m_f2 << "\n"; // prints 22
std::cout << f.m_f3 << "\n"; // prints 33
std::cout << f.m_f4 << "\n"; // prints 44

请注意,已定义此构造函数这一事实意味着编译器将不再提供默认构造函数。因此,如果您希望能够做到这一点:

Features f;

然后你需要提供你自己的默认构造函数:

Features() : m_f1(), m_f2(), m_f3(), m_f4() {} // initializes data members to 0

关于c++ - 这个结构试图做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722256/

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