定义期间变量的参数

时间:2018-09-03 19:43:36

标签: c++ oop

我是一名C程序员,正在尝试在C ++和面向对象编程中迈出第一步。我遇到了以下语法,但我无法完全理解它-为什么变量在定义时在这里有参数?

unique_ptr<int> myvar(new int);

我知道unique_ptr将原始指针用作其构造函数的参数,但是这种语法的原理是什么?这是C ++ 98以后引入的语法吗?

编辑:

我特别感到困惑的是,在新变量名后紧跟着一个括号。对我来说-这就是函数声明的方式。起初我以为代码声明了一个名为myvar的函数,但我知道那可能是错误的。

与类似于C或C ++ 98的语法有何不同?这种语法有名称吗?

1 个答案:

答案 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 外观。您实际上不能调用构造函数。