相关疑难解决方法(0)

如何重载"函数调用"操作符有用吗?

我最近发现在C++中你可以以一种奇怪的方式重载"函数调用"操作符,你需要编写两对括号来执行此操作:

class A { 
  int n;
public: 
  void operator ()() const; 
};
Run Code Online (Sandbox Code Playgroud)

然后以这种方式使用它:

A a;
a();
Run Code Online (Sandbox Code Playgroud)

什么时候有用?

c++ operator-overloading functor function-object

25
推荐指数
3
解决办法
2万
查看次数

C++实例初始化语法

鉴于这样的类:

class Foo {
public:
    Foo(int);

    Foo(const Foo&);

    Foo& operator=(int);

private:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

这两条线是完全相同的,还是它们之间有细微差别?

Foo f(42);

Foo f = 42;
Run Code Online (Sandbox Code Playgroud)

编辑:通过在原始问题中使Foo构造函数"显式",我感到困惑.我删除了,但欣赏答案.

我还添加了一个复制构造函数的声明,以明确复制可能不是一个简单的操作.

我真正想知道的是,根据C++标准,"Foo f = 42"会直接调用Foo(int)构造函数,还是会调用复制构造函数?

看起来fasih.ahmed有我正在寻找的答案(除非它是错的).

c++ initialization

11
推荐指数
2
解决办法
9259
查看次数