构造函数问题
Constructor issue
可能的重复:
带有空括号的默认构造函数
这是我使用的代码,我不明白构造函数package obj2()上发生了什么;输出仅显示值4(软件包OBJ1(4))和2(软件包OBJ3(2))
#include <iostream>
using namespace std;
class Package
{
private:
int value;
public:
Package()
{
cout<<"constructor #1"<<endl;
value = 7; cout << value << endl;
}
Package(int v)
{
cout<<"constructor #2"<<endl;
value = v; cout << value << endl;
}
~Package()
{
cout<<"destructor"<<endl;
cout << value << endl;
}
};
int main()
{
Package obj1(4);
Package obj2();
Package obj3(2);
}
这不会声明一个对象:
Package obj2();
相信与否,它声明了返回Package
对象的函数。它被称为"最烦人的解析"。
line
Package obj2();
需要
Package obj2;
更多信息
http://www.parashift.com/c -faq/ementy-parens-parens-in-object-decl.html
或其他选择(来自Google Cache,真实的网站都已经下降,并用一粒盐将其带来了好处,但会尽力使它们听起来比以前更糟):
http://webcache.googleusercontent.com/search?q=cache:http://yosefk.com/c++fqa/ctors.html#fqa-10.2
如果您使用的是C 11,并且要解决'最烦人的解析'问题,则可以替换
Package obj2();
Package obj2{};
这是C 11的统一初始化语法的一部分,该语法主要是为了解决此问题。
相关文章:
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- constexpr构造函数需要常量成员函数时出现问题
- 有关 c++ 构造函数的问题
- 关于复制构造函数的一个棘手问题
- 复制构造函数隐式转换问题
- 构造函数 (C++) 中的 char 指针参数存在问题
- C++:关于使用 Stroustrup 示例移动构造函数/赋值的问题
- 关于 std::bitset 构造函数的几个问题?
- 构造函数和 G++ 编译配方的问题
- 在 boost::variant 中类 holden 的复制构造函数存在问题
- C++ 关于两个类构造函数的问题
- 在构造函数 c++ 中初始化属性时出现问题
- 空构造函数和值传递问题
- 我是否需要在虚拟继承类的构造函数中初始化基类以解决菱形继承问题?
- 复制和赋值构造函数的问题
- 变分模板递归构造函数问题
- C++中用户定义的构造函数出现问题
- C ++回测问题:如何检查构造函数在假定失败时是否失败(给定输入的无效参数)
- C++的抽象类继承和构造函数的问题
- 错误 C2280 / 在 std::vector 中实例化对象时复制构造函数出现问题?