gpt4 book ai didi

c++ - 在另一个类中使用自定义构造函数声明一个类

转载 作者:行者123 更新时间:2023-11-27 23:14:51 26 4
gpt4 key购买 nike

我有一个类,它的唯一构造函数接受一个整数,我想在另一个类中使用它,而不是将它设为指针并使用 new/delete。

这可能吗?

头等舱相关部分:

class A
{
private:
int size;
char *c;

public:
A(int i)
{
size = i;
c = new char[i];
}
~A() { delete[] c; }
}

我想在示例类 B 中使用它,如下所示:

class B
{
private:
A a(7); // Declaration attempt #1
A b; //Declaration attempt #2
A *c; //This is what I'll do if I have no other choice.

public:
B()
{
b = A(7); //Declaration attempt #2
c = new A(7);
}
}

最佳答案

使用 () 对对象进行类内初始化是不可能的,因为它被解释为函数声明。您可以改用成员初始化器列表来执行此操作:

class B
{
A a;

public:
B() : a(7)
// ^^^^^^
{}
};

这也适用于构造函数内部的赋值,但推荐使用成员初始化列表,因为初始化而不是赋值。

在 C++11 中,您可以使用统一初始化:

class B
{
A a{7}; /*
^^^^^^^ */

public:
B() = default;
};

关于c++ - 在另一个类中使用自定义构造函数声明一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077551/

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