首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我想将对象中的对象调用到c++中的其他类

在C++中,要将一个对象中的对象调用到其他类中,可以使用成员对象的方式。成员对象是指一个类中的另一个类的实例作为其成员变量。

下面是一个示例代码,说明如何将一个对象中的对象调用到C++中的其他类:

代码语言:txt
复制
// 假设有一个类A
class A {
public:
    void doSomething() {
        cout << "Class A is doing something." << endl;
    }
};

// 在另一个类B中使用A类的对象作为成员对象
class B {
private:
    A objA; // A类的对象作为成员对象

public:
    void callObjA() {
        objA.doSomething();
    }
};

// 在类C中使用B类的对象
class C {
private:
    B objB; // B类的对象作为成员对象

public:
    void callObjB() {
        objB.callObjA();
    }
};

// 在其他地方调用类C的对象
int main() {
    C objC;
    objC.callObjB();

    return 0;
}

在这个例子中,类C通过成员对象的方式调用了类A的成员函数。首先,在类C中创建一个对象objC,然后调用它的成员函数callObjB。在callObjB函数中,它使用了一个成员对象objB,该成员对象是类B的一个实例。然后,通过调用objB的成员函数callObjA,objB又使用了一个成员对象objA,该成员对象是类A的一个实例。最后,objA调用了它的成员函数doSomething。

这样,就可以将一个对象中的对象调用到C++中的其他类中。

请注意,以上示例代码仅供参考,实际应用中需要根据具体的需求进行设计和修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++】————对象

如果一个什么成员都没有,简称为空。空什么都没有吗?...如果类没有显式定义构造函数,则 C++ 编译器会自动生成一个无参默认构造函数,一旦用户显式定义编译器将不再生成。...析构函数生命周期到了以后,自动调用 1.3拷贝构造函数 : 拷贝构造函数:只有单个形参,该形参是对本 类型引用(一般用const修饰),就是用已存在类型对象创建新对象,由编译器自动调用。...二、赋值运算符重载 2.1运算符重载: 在C++,为了增加代码可读性增加了运算符重载,运算符重载是具有特殊函数名函数,也具有返回值类型,函数名字以及参数序列,其返回值与参数列表与普通函数类似...函数名字:关键字operator后面接上需要运算符符号 函数原型:返回值类型operator操作符(参数列表) 不能通过连接其他符号来创建新操作符:比如operator@ 重载操作符至少存在一个参数为类型参数

10810

C++对象

构造函数本质是要替代我们以前Stack和DateInit函数功能,构造函数⾃动特点就完美的替代了Init。 构造函数特点: 1. 函数名与名相同。...如果类没有显式定义构造函数,则C++编译器会⾃动⽣成⼀个⽆参默认构造函数,⼀旦⽤⼾显式定义编译器将不再⽣成。 6....,不需要我们管,C++规定对象在销毁时会⾃动⽤析构函数,完成对象中资源清理释放⼯作。...赋值运算符重载 5.1运算符重载 • 当运算符被⽤于类型对象时,C++语⾔允许我们通过运算符重载形式指定新含义。...C++规定类型对象使⽤运算符时,必须转换成⽤对应运算符重载,若没有对应运算符重载,则会编译报错。

6910
  • C++对象

    日期实现 7. const成员 8. 取地址及const取地址操作符重载 ---- 1. 6个默认成员函数 如果一个什么成员都没有,简称为空真的什么都没有吗?...// 无参不要像下面这样写 Date d4(); Date func(); 重点: 5.如果类没有显式定义构造函数,则C++编译器会自动生成一个无参默认构造函数,一旦用户显式定义编译器将不再生成。...对象生命周期结束时,C++编译系统系统自动调用析构函数 下面代码:没有初始化,也没有销毁函数,但是有构造函数和析构函数,在对象创建时候,已经初始化,在函数销毁时候,已经销毁了数据结构栈空间。...:关键字operator后面接需要重载运算符符号 函数原型:返回值类型 operator操作符(参数列表) 注意: ·不能通过连接其他符号来创建新操作符:比如operator@ ·重载操作符必须有一个类型参数...①在创建返回月天数函数时候,不能将数组创建在函数外,

    1.2K20

    C++对象

    ---- 前言 祖师爷在设计 C++ 时,规定每个中都有六个默认成员函数,即使我们不主动写,编译器也会自动生成,这些成员函数就是神秘天选之子,不仅神秘,而且还很强大,可以这么说:对象是否学懂...,默认构造函数很有用 题目:用栈实现队列 需要在队列这个,调用两个栈,实现队列 此时我们只需要写好栈默认构造函数 队列默认构造函数不需要写,因为自动生成会去调用自定义类型默认构造函数,...+中新关键字,operator 作用很简单,实现自定义类型运算 使用规则: operator 函数操作数取决于参数个数 operator 一般写在,方便通过 this 指针访问成员变量 写在时...,直接手动设置,每次都返回 nullptr ,当然这种情况几乎不存在 开发者何必为难开发者 ---- 总结 以上就是关于 对象全部内容了,本文主要侧重点为 六大天选之子,以及编译器自动生成默认成员函数...这里推荐日期实现练习,能让我们对对象有一个更深层次理解,关于日期实现,将会在下篇文章中介绍,敬请期待! 如果你觉得本文写还不错的话,期待留下一个小小赞,你支持是分享最大动力!

    22510

    对象C++

    构造函数本质是要替代我们以前Stack和DateInit函数功能, 构造函数⾃动特点就完美的替代了Init。!完成初始化功能 1.1构造函数特点: 1....看看以下实例加深印象: 内置类型(基本类型)和⾃定义类型 C++类型分为 内置类型(基本类型)和⾃定义类型 。...2.析构函数 析构函数与构造函数功能相反,析构函数不是完成对对象本⾝销毁,⽐如局部对象是存在栈帧, 函数结束栈帧销毁,他就释放了,不需要我们管,C++规定对象在销毁时会⾃动⽤析构函数,完成对象中资源清理释放...4.赋值运算符重载 4.1运算符重载 1.当运算符被⽤于 类型对象时 (使用范围) ,C++语⾔允许我们通过 运算符重载形式指定新含义。...C++规定类型对象使⽤运算符时,必须转换成⽤对应运算符重载,若没有对应运算符重载,则会编译报错。

    8510

    c++对象

    1.6个默认成员函数 在C语言中,当我们想使用结构体时且当结构体成员变量为指针变量(如:顺序表,链表等等)我们需要使用动态内存时,比较正规方法时建立初始化函数,在函数实现初始化。...而在c++编译器会自动为生成6个默认成员函数。 默认成员函数:用户没有显式实现,编译器会生成成员函数称为默认成员函数。...构造函数是特殊成员函数,主要任务并不是开 空间创建对象,而是初始化对象。 如果在并没有显示定译构造函数,编译器会默认生成一个 无参默认构造函数。...函数原型:返回值类型 operator操作符(参数列表) 参数类型:const T& 注意 不能通过连接其他符号来创建新操作符:比如operator@ 重载操作符必须有一个类型参数...它用到场景非常少,可以说取地址重载——补充这个语言完整性,更加系统。

    14710

    C++对象()

    取地址操作符重载 开始之前,想说是,此篇博客花了较长时间,字数比较多,请耐心食用 一、6个默认成员函数 开始之前,我们很有必要先了解6个默认成员函数。...如果一个什么成员都没有,简称为空。空什么都没有吗?并不是的,任何一个在我们不写情况下,都会自动生成下面 6个默认成员函数。 在这个地方,对于这6个默认成员函数,前面四个是比较重要。...return 0; } 如果类没有显式定义构造函数,则C++编译器会自动生成一个无参默认构造函数,一旦用户显式定义编译器将不再生成 。...但是如果写在全局,又引发了另一个问题: 如何去访问私有属性❓ 1.直接把私有权限改为公共权限 2.在设置get和set方法,然后在外直接调用即可 3.友元声明 同时,全局变量/全局函数在所有文件...至此,内容比较多了,我们先到这里结束掉我们对象()内容

    1.2K30

    C++初阶-对象

    C++对象渐入之章 一、前言 二、6个默认成员函数汇总 三、构造函数 四、析构函数 五、拷贝构造函数 六、赋值运算符重载 1、运算符重载 2、赋值运算符重载 七、日期实现 八、const成员...九、取地址及const取地址操作符重载 一、前言 本章是继C++对象启点之章后续,进一步深入学习掌握C++对象 二、6个默认成员函数汇总 对于任何一个来说,在我们不主动写默认成员函数时...(避免内存泄漏),为了避免忘记,C++也引入了析构函数 概念: 析构函数不是完成对象销毁,局部对象销毁工作是由编译器完成,而对象在销毁时会自动调用析构函数,完成一些资源清理工作(释放动态开辟空间...operator操作符(参数列表) 注意: 不能通过连接其他符号来创建新操作符,如@等 重载操作符必须有一个类型或者枚举类型操作数 .* 、:: 、sizeof 、?...将const修饰成员函数称之为const成员函数,const修饰成员函数,实际修饰该成员函数隐含this指针,表明在该成员函数不能对任何成员进行修改 相关问题: class Date

    61220

    C++初阶】—— 对象 (

    ,代码可以通过编译,因为编译器生成了一个无参默认构造函数 将Date构造函数放开,代码编译失败,因为一旦我们自己定义任何构造函数,编译器将不再生成 C++11 针对内置类型成员不初始化缺陷做出了改变...,内置类型成员变量在声明时可以给默认值。...不实现构造函数,默认构造初始化对象将会是随机值,看起来好像默认构造一无是处!真的是这样吗? C++把类型分成内置类型和自定义类型。...若未显式定义,系统会自动生成默认析构函数 对象生命周期结束时,C++编译系统系统自动调用析构函数 整体上来说,析构函数就是反向构造函数其大部分特征都类似,编译器自动生成默认析构函数也只处理自定义类型...,下节将对对象进行收尾!

    7210

    C++对象)--下篇

    ,parameter为参数(可以为多个) 注意事项: 不能通过连接其他符号来创建新操作符 重载操作符至少有一个类型参数 用于内置类型之间运算符含义不改变,编译器会自动检测使用运算符类型是什么,从而选择是否改变运算符含义...(4)有了值拷贝我们就一定要说说深拷贝,在Date这样不需要我们自己实现,而在Stack这样中就需要显式实现,进行资源管理 拿出我们老演员栈: typedef int DataType;...,所以在生成s2时,s2指针a指向数组与s1指针指向数组相同,在程序结束时,调用析构函数释放了s2,对应这块数组空间也被释放,然后调用析构函数释放s1,已经被释放空间不能被再次释放,所以出现了这样错误...const成员函数,const实际修饰其中隐含this指针,表明在该成员函数不能对任何成员进行修改 因为参数为隐藏,所以我们方法如下: void Date::Print() const {...const成员函数 非const对象能调用const成员函数 const成员函数内不能调用其他非const成员函数 非const成员函数内能调用其他const成员函数 七、日期实现 Date.h #

    12410

    C++ 初阶 对象()

    妈妈再也不用当心忘记初始化了~ 1.2构造函数特性 1. 无返回值。 2.函数名与名相同。 3. 对象实例化时编译器自动调用对应构造函数。 4. 构造函数可以重载。...Date,那么构造函数也得写成。...但必须要注意一点则是,在C++,编译器会对自定义类型调用它默认构造函数,而不对内置类型进行处理。...因此在C++,就诞生了一个函数,它就是析构函数,它能够令对应出了它生命域便销毁,从而保证了安全性。 2.析构函数特性 1. 析构函数名是在名前加上字符 ~。 2....一若未显式定义,系统会自动生成默认析构函数。注意:析构函数不能重载 4. 对象生命周期结束时,C++编译系统系统自动调用析构函数。

    14910

    C++对象)【下篇】

    赋值运算符重载 运算符重载 当运算符被⽤于类型对象时,C++语⾔允许我们通过运算符重载形式指定新含义。...C++规定类型对象使⽤运算符时,必须转换成⽤对应运算符重载,若没有对应运算符重载,则会编译报错。 运算符重载是具有特殊名字函数,他名字是由operator和后⾯要定义运算符共同构成。...和其他函数⼀样,它也具有其返回类型和参数列表以及函数体。 重载运算符函数参数个数和该运算符作⽤运算对象数量⼀样多。...(*this == d); } 获取某年某月天数 这个获取某年某月天数会频繁调用,我们就直接在里实现, 这样就不用到域去找了。 assert断言月必须是1到12月。...const实际修饰该成员函数隐含this指针指向内容,表明在该成员函数不能对任何成员进⾏修改。

    9410

    C++对象)--上篇

    一、六个默认成员函数 如果有个什么成员都没有,那么被称为空 由编译器自动生成成员函数称为默认成员函数 空中会自动生成六个默认成员函数,这六个默认成员函数在每个中都会自动生成 ①初始化功能构造函数...,对二者有不同操作 二、构造函数 1、构造函数基本概念 构造函数是一个特殊成员函数,名字与名相同,创建类型对象时由编译器自动调用,以保证每个成员都要初始化,并且在对象整个生命周期内只调用一次 2...,除了_year _month _day 外还有一个Time,内置类型成员在销毁时不被资源清理,但自定义类型需要调用析构函数回收,但是main函数不能直接调用Time析构函数,实际要释放是Date...对象,所以编译器会调用Date析构函数,编译器默认生成析构函数可以对自定义成员Time调用它析构函数,即当Date销毁时,Time也会销毁 如果类没有申请资源时,也就是没有在堆上申请空间时,...: 已存在对象建立新对象 函数参数为类型对象 函数返回值为类型对象 class Date { public: Date(int year, int month, int day) { cout

    7010

    C++对象)】—— C++不解之缘(四)

    前言: 接下来进行对象学习,了解对象默认成员函数 一、对象默认成员函数         默认成员函数就是用户没有显示实现,编译器会自动生成成员函数。...6、    传值返回会产⽣⼀个临时对象⽤拷⻉构造,传值引⽤返回,返回是返回对象别名(引⽤),没有产⽣拷⻉。...二、赋值运算符重载         2.1、运算符重载 1、当运算符被用于类型对象时,C++语言允许我们通过运算符重载形式指定新含义。...和其他函数一样,它也具有其返回类型和参数列表以及函数体。 3、重载运算符函数参数个数和该运算符作用运算对象数量一样多。...2、 const实际修饰该成员函数this指针,表明在该成员函数不能对任何成员进行修改。

    10710

    c++对象关系_对象只能访问该类私有成员

    大家好,又见面了,是你们朋友全栈君。...以及对象关系以及访问修饰符 一.概念: 二.对象关系: 三.组成: 四.创建: 五.访问修饰符: 一.概念: 是对于某一对象一个统称,对象抽象化,对象实例...所有或成员,任何代码均可访问该项,访问权限最大也就意味着最不安全 Private访问修饰符:范围:私有的,只有内部可以进行访问,允许一个将其成员变量和成员函数对其他函数和对象进行隐藏。...只有同一个函数可以访问它私有成员。即使是实例也不能访问它私有成员。...和内嵌成员,只有派生可以访问该项; Internal访问修饰符:范围:内部,默认,程序集内部可以访问,允许一个将其成员变量和成员函数暴露给当前程序其他函数和对象

    1.6K10

    C++真身和对象构造(一)

    对象构造 1、不知道读者有没有注意,在上面定义里面的属性没有给它初始化,那到底是多少呢,是0还是随机值呢?...,对象只是变量): 在栈创建对象时,对象访问属性初始化时随机值(就比如上面的gt2.i= 12129664,gt2.j=7208832)。...在静态存储去创建对象时,对象访问属性初始值为0(就是我们这里gt.i=0,gt.j=0)。...2、其实一般来说对象访问里面的属性都要有一个初始化,在c++里面有一一个构造函数,就可以解决对象访问属性初值问题,就不用管第一条说那样(分栈、堆啥),那我们怎样使用构造函数呢?...首先我们要明白构造函数定义: C++可以定义与名相同特殊成员函数,这个特殊成员函就是构造函数了。 构造函数没有任何返回类型声明。 构造函数在对象定义时自动被调用。

    43020

    C++临时对象

    C++临时对象(Temporary Object)又称无名对象。临时对象主要出现在如下场景。 1.建立一个没有命名非堆(non-heap)对象,也就是无名对象时,会产生临时对象。...,作为实参传递到testFunc函数。...3.函数返回一个对象时,会产生临时对象。以返回对象最作为拷贝构造函数实参构造一个临时对象。...原因是:赋值符函数不能创建新对象,它要求”=”左右对象均已存在,它作用就是把”=”右边对象值赋给左边对象。 2.main函数中加入如下一条语句会输出什么?...---- 参考文献 [1]Scott Meyers.More Effective C++(第三版)[M].北京:电子工业出版社,2011.1 [2]关于C++临时对象问题

    1.1K10

    手撕C++对象

    构造函数本质是要替代我们以前Stack和DateInit函数功能,构造函数⾃动 特点就完美的替代了Init。...(返回值啥都不需要给,也不需要写void,不要纠结,C++规定如此) 对象实例化时系统会⾃动⽤对应构造函数。 构造函数可以重载。...但是栈是需要析构函数,因为栈有资源需要清理 对于日期的话,我们是不需要进行内存释放 但是我们可以一些小操作 在对象声明周期最后我们可以让对象值进行一系列操作,反正声明周期之后会自动...,加了取反的话就是说明效果不同 析构函数不需要参数 对于自定义类型对象是会自动调用对应析构函数,不管这个里面有没有其他析构函数 都不影响自定义类型对于它自己析构函数调用 C/C++两种方法做括号匹配题目...C++规定类型对象使⽤运算符时,必须转换成⽤对应运算符重载,若没有对应运算符重载,则会编译报错。 • 运算符重载是具有特殊名字函数,他名字是由operator和后⾯要定义运算符共同构成。

    10110

    C++初阶】对象修炼

    一.构造函数 首先给大家聊聊为什么C++要设计出构造函数,构造函数完成对象初始化Init(),因为在实际代码编写过程,我们往往会忘记写对象初始化函数Init(),甚至还会出现写了忘记调用情形...PS:构造函数完成对象初始化,而不是对象创建,对象创建是实例化这个行为完成,只不过构造函数是在实例化,创建对象过程同步完成对象初始化。...另外,由于函数重载,我们还可以写出全缺省构造函数和无参构造函数,这三个都是默认构造函数,其中,还顺便测试了一下,在实例化三种方式,得出了能调用两个默认构造函数是哪几个实例化结果。...,资源清理工作往往是更多人容易忽略地方,C++析构函数就这样诞生了,如果你没写的话,编译器就帮我们写好析构函数,并且在对象销毁(函数返回)时候同步把对象用到资源清理。...对于不同,每一种实例化出来多个对象之间可能不能比较对象大小,比如带有字符串;但是几乎大部分实例化出来对象都是支持对象之间相互赋值,所以C++就把赋值运算符重载加到了六大默认成员函数

    52850
    领券