使用new运算符和对象的非默认构造函数

3

你需要的是这样的内容吗:

classname* p = new classname(parameter1, parameter2, ...); 

创建一个指向使用非默认构造函数初始化的对象的指针,签名为:classname(parameter1, parameter2, ...)?谢谢!

4
我无法用超过30个字符回答这个问题。“是”。 - undefined
你为什么不试一试呢? - undefined
谢谢!基础问题,我知道,但是我不确定。 :D - undefined
@KerrekSB 我尝试过了,但是我的代码出现了段错误(seg fault),我觉得可能是对象没有被初始化。我在谷歌上查找了一下,但没有找到相关信息,所以我决定在这里问一下。再次感谢! - undefined
4个回答

4

是的,那是正确的。




1
是的,它会。这个程序演示了这个概念。
#include <string>
#include <iostream>

class Foo
{
private:
    std::string name;
public:
    Foo() : name("default"){}
    Foo(std::string Name): name(Name) {}

    void Print() { std::cout << name << std::endl; }
};

int main ()
{
    Foo* foo = new Foo();
    foo->Print();
    delete foo;

    foo = new Foo("special");
    foo->Print();
    delete foo;
}

输出结果为:
default
special

感谢你编写了一个程序来说明这个概念。你太棒了!:D - undefined

1

我自己也说不出更好的话了 - 记得在使用完后删除它,除非你想让堆不开心!


愿意。毕竟,讨厌让堆栈不开心。 :p - undefined
确实,一个不开心的堆 = 一个不开心的程序员 - undefined

0
是的,它确实有。但我想知道你是怎么想到这个问题的?你遇到了一些错误吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接