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

21010

C++对象

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

1.2K20
  • C++】————对象

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

    10610

    C++对象()

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

    1.2K30

    c++对象

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

    14110

    C++ 初阶 对象()

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

    14410

    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 #

    12010

    C++初阶-对象

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

    60520

    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

    6410

    C++初阶】—— 对象 (

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

    6710

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

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

    1.6K10

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

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

    42720

    C++初阶路】--- 对象()

    有这样一个问题: Date中有InitDate与 PrintDate两个成员函数,函数体没有关于不同对象区分,那当d1调用 InitDate函数时,该函数是如何知道应该设置d1对象,而不是设置d2...C++通过引入this指针解决该问题,即:C++编译器给每个“非静态成员函数“增加了一个隐藏指针参数,让该指针指向当前对象(函数运行时调用该函数对象),在函数体中所有“成员变量”操作,都是通过该指针去访问...而且每个方法不需要传递Stack*参数了,编译器编译之后该参数会自动还原,即C++ Stack *参数是编译器维护,C语言中需用用户自己维护。...二、6个默认成员函数 如果一个什么成员都没有,简称为空。 空真的什么都没有吗?并不是,任何在什么都不写时,编译器会自动生成以下6个默认成员函数。...构造函数是一个特殊成员函数,名字与名相同,创建类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适初始值,并且在对象整个生命周期内只调用一次。

    11510

    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++初阶】对象修炼

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

    52350

    Java对象

    1 什么是对象 在Java近似于C语言中结构体,是用来对一个实体(对象)来进行描述,如下: class Demo1 { public int a = 0; private...至此,可能大家还是对对象概念比较模糊,接下来举一个例子来进行详细说明: 1.1 定义一个洗衣机 class WashMachine{ public String brand; // 品牌...用类型创建对象过程,称为实例化,在java采用new关键字,配合名来实例化对象。...然后main方法创建了三个对象,并通过Date成员方法对对象进行设置和打 印,代码整体逻辑非常简单,没有任何问题; 然而,如果我们将setDay变量名y,m,d改为year,mouth,day...在"成员方法",this只能引用当前对象,不能再引用其他对象 4. this是“成员方法”第一个隐藏参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象引用传递给该成员方法,

    5300

    OC对象

    说到面向对象就不得不提对象这两个概念。是一个抽象概念,而对象是一个具体概念。举一个生活例子。...下面是上课老师给出对象概念,从多个角度帮助我们更好地理解对象概念: 对象概念; 1.从生活逻辑理解: 类别、种类 对象 人         小明 对象具体到了某一个事物...Person * xiaoming; 对象:某种数据类型下创建一个变量。 xiaoming. 4.官方定义: :具有某种特征事物抽象。 对象:具有某种特征事物一个实例(具象)。...在OC要对进行声明,再利用创建新对象,可以利用一个创建多个对象。...函数在声明之后还要实现函数,这样函数才能被主函数创建对象调用。OC将声明和函数实现分别放在了.h和.m这两个文件,显得更加有条例性。

    96460

    python对象

    前言 学了python基本类型, 语法以及常见模块, 这篇来学习一下python对象, 不做过多解释和难以理解文字, 简单举一些小例子, 写一些示例代码来说明应该如何写...在Python,通过使用来实现封装,将数据属性定义为成员变量,将操作方法定义为成员方法,从而将相关数据和操作组织在一起。 2....(byd_car) # 输出:是byd汽车 who_are_you(cc_car) # 输出:是长城汽车 在上面的例子,我们定义了一个`Car`来实现封装,包含一个`who()`...>> setattr(对象,'成员名',值): 设置或者添加对象/成员 print(setattr(byd_car, "whoo", lambda x:x)) # None print(hasattr...(byd_car, "whoo")) # True delattr(对象,成员): 删除对象/成员 print(delattr(byd_car, "whoo")) # None print(hasattr

    18320
    领券