相关疑难解决方法(0)

带空括号的默认构造函数

有没有什么好的理由在C++中调用默认构造函数时,一组空的圆括号(括号)无效?

MyObject  object;  // ok - default ctor
MyObject  object(blah); // ok

MyObject  object();  // error
Run Code Online (Sandbox Code Playgroud)

我似乎每次都自动输入"()".是不是有一个很好的理由不允许这样做?

c++ constructor c++-faq default-constructor most-vexing-parse

192
推荐指数
8
解决办法
3万
查看次数

在不调用C++中的构造函数的情况下实例化对象

我是C++的新手,我目前正在学习构造函数.假设我有一个带有构造函数的类Dog:

class Dog{
    Dog(){
        std::cout << "Constructor called!
    }
};
Run Code Online (Sandbox Code Playgroud)

我知道在C++中有不同的方法(如果我没有弄错的话)我们可以创建一个对象,例如:

1- Dog dog;
2- Dog dog = Dog();
3- Dog *dog = new Dog;
4- Dog *dog = new Dog();
5- Dog dog();
Run Code Online (Sandbox Code Playgroud)

但事情就是这样:1到4的语句都调用构造函数,但语句编号5没有,我可以找出原因.

你知道为什么第五个语句没有调用类构造函数吗?谢谢.

c++ constructor

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

不允许在C++中使用默认构造函数

我正在尝试用C++创建一个禁止使用默认构造函数的类.
然而,我认为我失败了,或者我不理解幕后发生的事情.这是我到目前为止:

class Point {
public:
        float x;
        float y;
        Point(float newX, float newY); //Definition is irrelevant
        Point() = delete; //Default or "empty" constructor is forbidden, so deleted
}
/* ... */
int main(void)
{
        Point a(1, 2); //Ok, should be available
        Point b; //Ok, does not compile
        Point c(); //Not ok, it does compile :(
}
Run Code Online (Sandbox Code Playgroud)

我的预期行为是c点不编译.我很感激帮助产生这样的行为,或者如果不可能的话,解释为什么这样的行为.

先感谢您

c++ c++11

0
推荐指数
1
解决办法
626
查看次数