C++创建一个类的实例
C++ Creating an instance of a class?
可能重复:
带空括号的默认构造函数
实例化带括号还是不带括号的类?
程序:
class Foo
{
public:
Foo ( int bar = 1 )
{
cout << "bar=" << bar;
}
};
int main() {
cout << "0 - ";
Foo foo_0 ( 0 ) ;
cout << 'n';
cout << "1 - ";
Foo foo_1 ();
cout << 'n';
cout << "2 - ";
Foo foo_4;
cout << 'n';
return 0;
}
输出:
0 - bar=0
1 -
2 - bar=1
问题:为什么示例#1不起作用,而示例#0和#2起作用?
Foo foo_1 ();
是一个函数声明,没有创建任何对象。它是一个名为foo_1
的函数,不接受任何参数,并返回一个Foo
对象。
构造对象的正确方法是
Foo foo1;
这个概念被称为C++的烦恼解析。简短的描述是,任何可以被视为声明的东西,都是.
foo_1();换句话说,它被称为Null初始化,您必须知道对象创建和值初始化之间的区别。
相关文章:
- 如何将模板的实例传递给另一个模板的另一个实例?
- 在类的第一个/最后一个实例存在之前/之后调用一对函数.有没有更好的方法?
- 是否可以为所有子类设置一个实例?
- 如何在C++中将类的实例完全重新分配给同一类的另一个实例(然后删除原始对象)?
- 如何一次创建帧的一个实例
- 无法从派生类型的作用域访问另一个实例的受保护成员
- QT Windows GUI-无需qtSingLeaplication即可如何打开一个实例
- 包含另一个实例的特征实例,该实例持有固定大小的特征对象
- 从模板类的另一个实例创建模板类的实例时省略模板参数
- 为什么将FMTFLAG指定两次 - 作为枚举的一部分,而另一个实例为静态const变量
- 对成员变量的引用在向同一向量中添加另一个实例后断开
- std :: unordered_set :: find-仅构造一个实例()
- 是否可以在 std::optional 中放置一个实例,而不检查/破坏前一个实例?
- 从字符串中删除字符的第一个和最后一个实例
- Object 创建另一个实例,而不是修改指向的实例
- 在#define宏中创建一个实例
- C++-为任何lambda创建一个实例化桶
- qnetworkAccessManager一个实例并连接插槽
- C 是否有办法仅返回for循环的最后一个实例
- 为什么我的程序有一个实例,其中"Vector Subscript out of Range"?