gpt4 book ai didi

c++ - 类对象在没有定义成员变量的情况下被初始化

转载 作者:行者123 更新时间:2023-11-30 03:31:09 27 4
gpt4 key购买 nike

我正在学习 C++ 并遇到了这段代码,其中构造函数在没有声明成员变量的情况下被初始化。此外,该对象是在没有任何参数的情况下创建的。难道不会调用默认构造函数吗?

另外,如果这个类被继承,派生类是否可以访问x和y?

//示例程序

#include <iostream>
#include <string>

class game
{
public:
game(int x = 0, int y = 100); // Do they get defined as members?
int z;
};

game::game(int x, int y) : z(x)
{
std::cout << x;
}

int main()
{
game g; // passed w/o parameters.
return 0;
}

最佳答案

Also the object is created without any parameters. Wouldn't a default constructor be called instead?

你声明你的构造函数如下:

game(int x = 0, int y = 100);

和实现:

game::game(int x, int y) : z(x)
{
std::cout << x;
}

由于您已经为构造函数指定了默认参数,因此当您调用时:

game g;

这与调用相同:

game g {0, 100};

因为为构造函数提供了默认参数。

game(int x = 0, int y = 100); // Do they get defined as members.

它们不会被定义为成员,除非您将它们的值设置为类中的成员。 xy 都在构造函数结束时超出范围。

Also, if this class is inherited will the derived class have access to x and y?

不直接,可以看到如下:

class Derived : public game
{
public:
Derived();
};

Derived::Derived() : game(100, 100) //Or whatever arguments
{
//...
}

关于c++ - 类对象在没有定义成员变量的情况下被初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44436726/

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