相关疑难解决方法(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
查看次数

C++:由隐式构造函数初始化int变量

我正在学习C++,我对int变量的初始化感到有点困惑.

这段代码(包括注释)是Nawaz在本主题中的答案的复制/粘贴为什么C++需要用户提供的默认构造函数来默认构造一个const对象?

struct POD
{
  int i;
};

POD p1; //uninitialized - but don't worry we can assign some value later on!
p1.i = 10; //assign some value later on!

POD p2 = POD(); //initialized
Run Code Online (Sandbox Code Playgroud)

对于p2,我了解到以下情况:

  • 调用默认构造函数POD()以创建临时POD对象.构造函数不是用户定义的,因此它是隐式的.对于像int这样的内置类型,隐式默认构造函数不执行任何操作(不进行初始化).因此包含一些随机的东西.
  • 调用复制构造函数以使用临时POD对象(其i仍未初始化)创建p2 .因此,不应该初始化p2的i成员.

但是,评论说p2已初始化!欢迎任何解释.谢谢.

c++ int constructor

4
推荐指数
1
解决办法
3425
查看次数

带()的C对象 - 它做了什么?

这段特殊代码的作用是什么?更准确地说,测试tob(); 做?

class test {
 private:
  int a;
  int b;
 public:
  test (int);
  test();
};
test::test() {
 cout<<"default";
}
test::test (int x=0) {
 cout<<"default x=0";
}
int main() {
 test tob();
}
Run Code Online (Sandbox Code Playgroud)

我不知道什么测试tob(); 做,但它没有给出任何编译错误.

c++

3
推荐指数
1
解决办法
67
查看次数

为什么我收到此代码的错误?

有人能告诉我为什么编译器会给出错误.

class A
{
private:
 int data;
public:
 A();
 A(A& a) { this->data = a.data; }
};

void main()
{
 A a();
 A b(a);
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误就是这个.

error C2664: 'A::A(A &)' : cannot convert parameter 1 from 
 'A (__cdecl *)(void)' to 'A &'
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

3
推荐指数
1
解决办法
89
查看次数

C++构造函数不调用

#include<iostream>  
using namespace std;  
class base {  
public:     
    base() {
        cout<<"Constructing base \n";
    }  
    virtual ~base() {
        cout<<"Destructing base \n";
    } 
};  
class derived: public base { 
public:    
    derived() {
        cout<<"Constructing derived \n";
    }    
    ~derived() {
        cout<<"Destructing derived \n";
    }
};   
int main(void) {
    derived d();     
    return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

为什么在这个程序中它没有调用构造函数?

谁能解释一下?
.......

c++ constructor

2
推荐指数
1
解决办法
144
查看次数

标签 统计

c++ ×5

constructor ×2

int ×1

most-vexing-parse ×1

visual-c++ ×1