这一小堆代码是什么意思
What does this small chuck of code mean?
我有这堆代码,如果有人能帮我提供更多关于它的信息,我将不胜感激。我知道一些编码,但不太多,所以如果这看起来很傻,请耐心等待。
class A
{
public:
A();
};
int x, y, z;
A::A():
x(1),
y(2),
z(3)
{
//some code here basically more variable definition
}
我不明白的是,
一个同时也是类名称的函数?即使它有效,但我为什么要这么做?
x,y,z的变量定义是怎么回事?我假设调用了一些构造函数,但用正常方式定义它们有什么错?它们在冒号
:
之后但在函数定义之前意味着什么?
谢谢。非常感谢。
实际上,您需要一个C++教程,但这里是:
与类同名的"函数"是构造函数。其中可能有几种,每种都有不同的论点。在这种情况下,构造函数根本不接受任何参数(因此被称为默认构造函数)。并不是所有的类都有默认的构造函数,但如果你没有编写自己的构造函数,那么编译器会为你创建一个默认的构造函数。
冒号后面的位是构造函数中使用的一个特殊语法位。它被称为初始值设定项列表。实际情况是,在进入构造函数的主体之前,列出的成员变量会用这些值初始化(或者,在对象的情况下,构造函数会用这些参数调用)。如果可以的话,您应该始终使用初始值设定项列表来设置变量的值。
在这种情况下,默认构造函数指定成员变量x
、y
和z
应分别初始化为1
、2
和3
(至少我假设它们是成员变量——正如所写的,它们实际上是全局变量)。
问题中的内容不是有效的C++。
class A
{
public:
A();
};
int x,y,z; // x,y,z are out here in the wild
// This is supposed to be the definition of the constructor of "A"
// outside the "A" class
//
// The "A::A() : " sequence introduces a list of member initializers.
A::A() :
x(1), // <- These are not members of "A", so they cannot be initialized as members!
y(2), // <-
z(3) // <-
{
}
我想你的意思是:
class A
{
public:
int x,y,z;
A();
};
A::A() :
x(1), // <- Now members of "A", so they can be initialized here
y(2), // <-
z(3) // <-
{
}
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思