我是一名C程序员,正在尝试在C ++和面向对象编程中迈出第一步。我遇到了以下语法,但我无法完全理解它-为什么变量在定义时在这里有参数?
unique_ptr<int> myvar(new int);
我知道unique_ptr
将原始指针用作其构造函数的参数,但是这种语法的原理是什么?这是C ++ 98以后引入的语法吗?
编辑:
我特别感到困惑的是,在新变量名后紧跟着一个括号。对我来说-这就是函数声明的方式。起初我以为代码声明了一个名为myvar
的函数,但我知道那可能是错误的。
与类似于C或C ++ 98的语法有何不同?这种语法有名称吗?
答案 0 :(得分:3)
不,此语法一直是C ++的一部分。它用于初始化对象。一个简单的例子:
int a(1); // a == 1
此语法的原理是什么?
我不知道,但是如果我不得不猜测是因为它看起来像是对构造函数的调用 1 。
struct X {
X(int); // looks like a function
};
X x(10); // looks like a call to the constructor
1 :外观。您实际上不能调用构造函数。