没有输入的默认构造函数

Mau*_*vai 0 c++ constructor class

我正在尝试创建一个具有没有输入参数的构造函数的类 - 我试图通过打印到屏幕来测试它.但是,除非我给构造函数一个输入,否则构造函数会被直接跳过 - 调试模式甚至不会将它注册为一行 - 任何人都可以对此有所了解吗?

另外,是否可以从属于不同类的构造函数/函数内部调用另一个类的构造函数?

头文件:

#pragma once
#include <vector>

using namespace std;

class rain
{
public:
    rain(); 
    void update();
    ~rain();

private:

};
Run Code Online (Sandbox Code Playgroud)

源文件:

#include "stdafx.h"
#include "rain.h"
#include "Digital Rain.h"
#include "Stream.h"
#include <Windows.h>
#include <iostream>
#include "Stream.h"



using namespace std;

int screen_width = 79;

rain::rain()
{
    cout << "hi" << endl;
}


void rain::update()
{
    Sleep(5);
}



rain::~rain()
{
}
Run Code Online (Sandbox Code Playgroud)

Bil*_*nch 5

我们来看一段代码:

#include <iostream>

class rain {
    public:
        rain();
};

rain::rain() {
    std::cout << "hi\n";
}

int main() {
    rain x();
    rain y;
}
Run Code Online (Sandbox Code Playgroud)

当我们运行它时,我们只会hi在输出上看到一次.这是因为令人烦恼的解析.

所以:

  • x实际上是一个函数的函数声明,它不带参数并返回一个rain对象.
  • y实际上是一个rain对象.

此外,您的编译器可能会警告您这种情况.clang例如会报告:

asdd.cc:26:11: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
    rain x();
          ^~
asdd.cc:26:11: note: remove parentheses to declare a variable
    rain x();
          ^~
1 warning generated.
Run Code Online (Sandbox Code Playgroud)