----------------------------- コードここから
#include <string>
#include <iostream>
using namespace std;

class SampleClass
{
public:
    SampleClass() {}
    void action() {cout << "SampleClass::action" << endl;}
};

class UserClass
{
    SampleClass sc;
public:
    UserClass(SampleClass sc_) : sc(sc_) {}
    void doAction() { sc.action(); }
};

int
main(int argc, char *argv[])
{
    SampleClass sclass();
    // SampleClass sclass; とすればエラーは出ないが、上記のように
    // 宣言しても引数無しのコンストラクタが呼ばれると思ったのですが…
    sclass.action(); // (1) エラー

    UserClass uc(SampleClass());
    uc.doAction(); // (2) エラー
}
----------------------------- コードここまで