相关疑难解决方法(0)

最烦恼的解析

我从这里得到了代码.

class Timer {
 public:
  Timer();
};

class TimeKeeper {
 public:
  TimeKeeper(const Timer& t);

  int get_time()
  {
      return 1;
  }
};

int main() {
  TimeKeeper time_keeper(Timer());
  return time_keeper.get_time();
}
Run Code Online (Sandbox Code Playgroud)

从它的外观来看,由于该行应该会出现编译错误:

TimeKeeper time_keeper(Timer());
Run Code Online (Sandbox Code Playgroud)

但只有在return time_keeper.get_time();存在的情况下才会发生 .

为什么这条线甚至很重要,编译器会发现time_keeper(Timer() )构造上的含糊不清.

c++ most-vexing-parse

27
推荐指数
1
解决办法
2436
查看次数

为什么没有调用构造函数?

此代码的行为与我的预期不符.

#include<iostream>
using namespace std;

class Class
{
    Class()
    {
        cout<<"default constructor called";
    }

    ~Class()
    {
        cout<<"destrutor called";
    }
};

int main()
{    
    Class object();
}
Run Code Online (Sandbox Code Playgroud)

我期望输出'默认构造函数',但我没有看到任何输出.问题是什么?

c++ constructor class most-vexing-parse

20
推荐指数
2
解决办法
1105
查看次数

A a()是什么意思?

考虑以下代码:

#include<iostream>
using namespace std;

class A
{
    public:
    A():age(12){}
    int age;
};

int main()
{
    A a();
    cout << a.age << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用g ++编译它时,我收到一个错误:

你看不到会员的年龄,因为a不是A级()

谁可以给我解释一下这个?什么是A a()

c++

5
推荐指数
2
解决办法
502
查看次数

标签 统计

c++ ×3

most-vexing-parse ×2

class ×1

constructor ×1