我如何在C 类的内部实例化对象
How do I instantiate an object inside of a C++ class?
用于C 学习目的,我有文件class1.h
,class1.cpp
,class2.h
和class2.cpp
。我想在class2
内实例化一个名为class1Obj
的对象。我在哪里以及如何实例化此对象?我是否在class2
构造函数内实例化classObj
?
过去,我创建了一个指针,该班级在这段时间效果很好,但是我认为指针不是我应该花时间的路线,因为classObj
仅在class2
中使用。
class class1
{
//...
};
class class2
{
class1 member;
//...
};
在class2 ctor中,您可以在构造函数初始化列表中初始化 member
。
class2::class2(...)
: member(...)
{
//...
}
过去是如何创建指针的?大概,您做了这样的事情:
class class2
{
public:
class2()
{
class1Pointer = new class1();
}
// Destructor, copy constructor/assignment, etc...
private:
class1* class1Pointer;
};
现在您想做完全一样的事情,但是这次您不希望指向class1
的指针,您需要class1
本身:
class class2
{
public:
class2() {}
// Destructor, copy constructor/assignment, etc...
private:
class1 class1Obj;
};
创建class2
对象时,将默认对象初始化对象。如果您的Class1构造函数应进行一些参数,请使用初始化列表:
class class2
{
public:
class2() : class1Obj(1, 2, 3) {}
// Destructor, copy constructor/assignment, etc...
private:
class1 class1Obj;
};
在类中实例化类:
#include <iostream>
using namespace std;
class Foo
{
public:
Foo(int i)
{
}
};
class Bar
{
Foo i; //<--- instantiate a class inside a class ----
public:
Bar() : i(1) //<--- instantiate a class inside a class ----
{
}
};
int main(void)
{
Bar b;
cout<<" nPress any key to continuen";
cin.ignore();
cin.get();
return 0;
}
它取决于您的class1。如果其构造函数接受一些参数,则必须在类别2构造函数或初始化列表中明确初始化它。
Class2 {
public:
class2() {
//Here m_class1Obj will be instantiated
m_class1Obj = Class1(/*some params*/);
}
private:
Class1 m_class1Obj;
};
或
Class2 {
public:
class2() : m_class1Obj() {}
private:
Class1 m_class1Obj;
};
相关文章:
- 从C++实例化QML
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 约束和显式模板实例化
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 对象实例化调用构造函数的次数太多
- 如何使用非默认构造函数实例化模板化类
- 静态数据成员模板专用化的实例化点在哪里
- 错误的cv::face FacemarkLBF实例化
- C++的解析器在可以区分比较和模板实例化之前会做什么?
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 检查某些类型是否是模板类 std::optional 的实例化
- 为什么我不能更改实例化对象内部的向量?
- 使用合格类型实例化的模板内部功能的名称分辨率
- 我如何在C 类的内部实例化对象
- 在没有“new”关键字的情况下实例化类会导致在堆栈或堆上创建其内部变量
- 从类代码内部使用对对象实例化的引用
- 类在递归函数内部实例化,c++
- switch内部的对象实例化(c++)