C++ 在一行中创建类实例和指向它的指针

C++ Create a class instance and pointer to it in one line

提问人:Nick 提问时间:11/21/2022 更新时间:11/21/2022 访问量:182

问:

在堆分配中,有一行语法用于创建实例并指向该实例的指针。 是否有一行语法用于相同目的,但具有堆栈分配?

#include <iostream>

class Base {};

int main()
{
    //Base* ptr = new Base(); // heap

    Base base;
    Base* ptr = &base; // stack  

    return 0;
}

我使用 2 行没有问题,只是想在这种情况下可能有一种特殊的语法(我正在从 Python :D 迁移)

C++ 指针 语法 实例 堆栈分配

评论

0赞 Nathan Pierson 11/21/2022
你为什么需要?Base*
0赞 Peter 11/21/2022
可以在单个声明语句中定义多个变量,例如 .不可能完全消除这两个部分,因为两个变量 ( 和 ) 都有名称。顺便说一句 - 像“堆”和“堆栈”这样的术语实际上不是 C++ 的一部分(在这种情况下) - 堆和堆栈是某些实现(特定编译器和主机系统)的特定概念,但与所有实现无关。Base base, *ptr = &base;baseptr
0赞 Nick 11/21/2022
@NathanPierson 这只是一个例子。但在实际情况下,我认为我会主要使用它来传递给函数。
0赞 Peter 11/21/2022
如果要将变量的地址传递给函数,则必须事先声明该变量。
0赞 Nathan Pierson 11/21/2022
你可以只基于一个函数。你可以编写函数来获取引用,然后只传递自身。这就是为什么我询问实际用例的原因,因为不清楚你什么时候想要这个。&basebase

答:

1赞 Maciej Polański 11/21/2022 #1
class Base {};

Base base, *ptr = &base;

但我不认为它是“格式良好的代码”。

评论

1赞 Nick 11/21/2022
非常感谢,明白了!然后我将使用 2 行。