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

我有一个指向对象的指针.如何调用期望引用的函数?

在编程中,指向对象的指针是一种常见的方法,用于存储和操作对象的内存地址。要调用指针所指向的对象的函数,您需要使用指针运算符(->)。以下是一个简单的示例:

代码语言:cpp
复制
#include<iostream>

class MyClass {
public:
    void printHello() {
        std::cout << "Hello from MyClass!"<< std::endl;
    }
};

int main() {
    MyClass obj;
    MyClass* ptr = &obj;

    ptr->printHello(); // 调用指向对象的指针的函数

    return 0;
}

在这个示例中,我们创建了一个名为MyClass的类,其中有一个名为printHello()的函数。然后,我们创建了一个MyClass对象obj,并创建了一个指向obj的指针ptr。最后,我们使用指针运算符->调用指向obj的指针的printHello()函数。

请注意,在使用指针时,您需要确保指针指向的内存是有效的,并且在使用指针之前对其进行初始化。如果指针未初始化或指向无效内存,则尝试访问指针的函数可能会导致程序崩溃或未定义行为。

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

相关·内容

C++ this指针:用于在成员函数指向调用函数对象

C++中this指针一个指向当前对象指针。在成员函数中,可以使用this指针来访问调用函数对象成员变量和成员函数。...一、定义和使用this指针 this指针是在成员函数内部定义一个常量指针。它存储了当前对象地址,可以通过它访问当前对象成员变量和成员函数。...二、作为返回值this指针 this指针可以作为返回值返回。这种情况下,返回指向调用函数对象指针。为了实现这个功能,需要将返回类型设置为类引用指针类型。...,返回指向调用函数对象指针。...四、总结 this指针在C++中是一个非常重要概念,可以用来访问调用函数对象,作为返回值返回,或者作为函数参数传递。掌握this指针使用可以帮助我们更好地编写面向对象程序。

23540

函数返回值指向一个指针

在 main() 函数中,调用 create_array() 函数并将其返回值指向一个整型指针 arr。然后,使用一个循环遍历数组每个元素,并打印出其值。最后,释放数组所占用内存空间。...在 C 语言中,回调函数是指一个函数指针,它作为参数传递给另一个函数,使得被调用函数可以调用传递进来函数指针来完成一些特定操作。...函数指针是指一个指向函数指针变量,它存储了函数地址,可以用来调用函数函数指针定义方式与普通指针定义方式相似,只是需要在指针类型前面加上函数返回类型和参数列表。...int (*p)(int, int); 定义了一个名为 p 指向函数指针变量,这个函数返回值类型是 int,两个整型参数。这个函数指针可以指向一个具有相同返回值类型和参数列表函数。...在 main() 函数中,将 p 指向 add() 函数,并调用它来完成加法操作,然后再将 p 指向 subtract() 函数,并调用它来完成减法操作。 函数里面的参数可以传递一个指针进来。

67820
  • C++核心准则编译边学-F.43 永远不要返回指向局部对象指针引用

    预期如此是因为对g()调用再次使用了调用f()之后放弃堆栈空间,因此*p访问是现在被gx占用空间。...这段代码中设法读取函数f被调用后放弃局部变量。保存在glob中指针可以在很长时间之后被使用并以无法预期方式带来麻烦。...这个问题稍微不同版本是将指针放到生命周期超过指针指向对象容器中情况。...参见:产生悬空指针另一种情况是指针无效化。它可以通过类似的技术检查或防止。 译者注:指针无效化应该是指针本来指向一个有效对象,但后来对象被销毁而指针没有被同时清空情况。...编译器倾向于捕捉返回指向局部变量引用情况,也可以在很多情况下捕捉返回指向局部变量指针情况。

    71720

    【C++】C++ 类中 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

    Student 引用类型参数 , 引用相当于一级指针 ; // 全局函数中 , 将两个 Student 对象相加 // 引用 等同于 一级指针 , Student 引用用法与 Student 对象用法相同..." << endl; } 此时 , 如果要创建 Student 对象 , 只能调用上述 参构造函数 , 如果使用 Student s2 方式调用 默认构造函数 创建 Student 对象 , 就会报错..., 就是返回自身对象变量 // this 是指针 , *this 是指针指向 自身对象 return *this; } 返回 引用 , 就是返回自身对象 ; this 是指针 , *this...是指针指向 自身对象 实际数据 , 返回引用 , 就是返回 自身对象实际数据 *this ; 四、完整代码示例 ---- 代码示例 : #include "iostream" using namespace...是指针指向 自身对象 return *this; } // 成员函数 转为 全局函数 , 多了一个参数 Student* pThis 作为第一个参数 void print() {

    21420

    【C++】继承 ⑥ ( 继承中构造函数和析构函数 | 类型兼容性原则 | 父类指针 指向 子类对象 | 使用 子类对象 为 父类对象 进行初始化 )

    子类对象 , 父类指针 值为 子类对象 在 堆内存 地址 , 也就是 将 子类对象 地址 赋值给 父类类型指针 ; 引用 : 父类引用 引用 子类对象 , 将 子类对象 赋值给 父类类型引用 ; 二..." << endl; } }; 1、父类指针 指向 子类对象 定义 一个子类对象 Child child ; 定义父类指针 , 将 指针 指向 子类对象 地址 , 这是合法 ; 代码示例...// 将指向子类对象指针传给接收父类指针函数 // 也是可以 fun_pointer(&child); // 接收父类引用 , 此处传入子类引用 fun_reference...// 将指向子类对象指针传给接收父类指针函数 // 也是可以 fun_pointer(p_parent); // 接收父类引用参数 fun_reference(*...类型兼容性原则 : 父类指针 指向 子类对象 Parent* p_parent2 = NULL; p_parent2 = &child; // 通过父类指针调用父类函数

    26220

    java多线程下如何调用一个共同内存单元(调用一个对象

    5 * 目标对象就会自动调用接口中run()方法 6 * */ 7 8 /* ----------------举例子------------------- */ 9 10 /* 11...* 使用Thread类创建两个模拟猫和狗线程,猫和狗共享房屋中一桶水,即房屋是线程目标对象 12 * ,房屋中一桶水被猫和狗共享。...猫和狗在轮流喝水过程中,主动休息片刻(让THread类调用Sleep(int n)) 14 * 进入中断状态),而不是等到被强制中断喝水。...house.setWater(10); 24 Thread dog,cat ; 25 dog = new Thread(house); //dog和cat目标对象相同.../* 需要注意是: 一个线程run方法执行过程中可能随时被强制中断(特别是对于双核系统计算机) */

    88850

    卓筑汇C++开发面经

    2月15日面试了总部位于天津卓筑汇公司,卓筑汇是一家做建筑设计自动化系统-SaaS 服务平台开发公司,面试岗位是C++岗位,这是一篇卓筑汇C++开发面经。...3.指针引用区别---引用指向一个变量之后,不能再指向其他变量,但可以修改变量值;指针就没有这样限制,引用实质上是指针常量 4.常量指针指针常量区别---常量指针const int *p,指向内容不可以修改...,但是指向变量可以改变;指针常量int * const p,指向内容可以修改,但指向变量不可变,始终指向同一块空间。...静态多态是通过函数重载实现,同名函数根据不同参数确定调用哪个函数,在编译时就可以确定;运行时多态就是由基类指针或者引用指向派生类对象时,调用函数时,编译时候无法确定调用哪个虚函数,在运行时才能确定...如何调试C++程序---设置个断点,然后用调试按钮...... 10.工作时间能接受吗 11.反问 12.对求职者一些建议---要加强动手能力,多写代码 13.期望薪资 14.有没有意向来公司,需要考虑时间吗

    29530

    分享一个关于this对象编程小技巧,如何使用箭头函数避免this对象混淆?

    一般我们都是在一个函数或方法中使用this,这个时候this指代什么,本质上取决于当前函数是由谁调用。...考虑一种特殊情况,那么在全局作用作用域下,this指代谁呢? 在全局作用域下this指代全局对象 如果函数是全局函数,是在全局使用域中调用,那么this等于全局对象。...但是在手机上测试,这个值打印出来是不一样。 五 this对象虽然不能在编码时赋值,但是其它方法变换this对象。bind、call、apply这三个方法都可以。...接下来我们看一看,如何用bind解决本文开始遇到问题。...本质上这三个方法改变是方法调用者,所以方法内部this也改变了。 六 最后总结一下,虽然bind等方法可以改变方法调用对象,借此改变this对象

    1.1K30

    【C++】多态

    那另一个条件呢? 2.2.2 条件2:基类指针或者引用调用函数 第二个条件: 必须通过基类指针或者引用调用函数 我们先学语法,后面会给大家讲原理。...那我现在这样写: 两个类不动,把main函数改成这样 注意两个指针都是Person*,一个指向父类对象一个指向子类对象,这样赋值是没问题,然后我们运行 大家看这次析构调用有没有问题...我们期望他怎么做,按照什么去调析构? 是不是期望它按照指向对象类型去调啊。 指向是父类对象,就按父类析构去走;指向是子类对象,就按子类析构去走。 那我们可以怎么做?...但是是要求: 基类虚函数必须返回基类对象指针引用,派生类虚函数必须返回派生类对象指针引用,我们把这种情况称为协变。...你可以把它看作是一个规范,告诉其他类应该有哪些方法,并且如何使用这些方法。 举个例子来说明抽象类概念: 假设我们一个抽象类叫做"动物",其中有一个纯虚函数"发出声音"。

    11110

    【C++】多态 ② ( 面向对象中 “ 多态 “ 真正需求 | 面向对象 “ 多态 “ 实现 - virtual 修饰函数 | 代码示例 )

    , 实际对象类型是 Parent 父类类型 , 不管是 将 Parent* 指针 指向 父类 还是 子类 , 不管是 将 Parent& 引用 指向父类 还是 子类 , 调用都是 父类 函数..., 这并不是我们想要 ; 上述测试中 , 根据实际 对象类型 确定 重写函数 中要调用 父类 还是 子类 中函数 , 并不是我们期望 ; 多态 需求是 : 相同调用语句 , 多种不通表现形态...; 父类指针 指向 父类对象 , 调用 重写函数 时 , 我们希望 调用是 父类函数 , 实际对象是父类 , 调用父类函数 ; 如果 父类指针 指向 子类对象 , 调用 重写函数 时 , 我们希望...调用 是 父类函数 , 这样才 符合 多态 理念 ; 实际对象是子类 , 调用子类函数 ; 通过 父类指针 可以调用 子类中重写函数 , 根据 指针 指向不同 , 调用不同类 函数 ,...指针 指向 父类 , 就调用父类函数 ; 指针 指向 子类 , 就调用 子类函数 ; 2、面向对象 " 多态 " 实现 - virtual 修饰函数 C++ 语言中 , 通过使用 virtual

    13820

    已知一个表格里编号状态和名称列,如何转换为目标样式?

    大家好,是皮皮。 一、前言 前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python自动化办公问题,一起来看看吧。...请教一下PANDA库问题:已知一个表格里编号状态和名称列,想转换为右侧图示表,df该怎么写啊?...后来【瑜亮老师】也给了一个思路和代码,如下所示: # 使用pivot_table函数进行重构 df_new = pd.pivot_table(df, index='名称', columns=df.groupby...,如下图所示: 顺利地解决了粉丝问题,喜得红包一个。...三、总结 大家好,是皮皮。这篇文章主要盘点了一个Python自动化办公问题,文中针对该问题,给出了具体解析和代码实现,帮助粉丝顺利解决了问题。

    19430

    万字长文【C++】高质量编程指南

    ,应用值传递方式返回String对象,如果改用 引用传递,那么函数返回值是一个指向局部对象 temp引用,由于temp在函数结束时被自动销毁,将导致返回引用无效。...c =a +b;//此时a+b并不返回期望值,c什么也得不到,留下隐患 (6)return语句不可返回指向 栈内存 指针或者引用,因为该内存在函数体结束时被自动销毁 char *FUN(void)....指针参数如何传递内存 1,如果函数参数是一个指针,不要指望用该指针去申请动态内存。...,成为野指针原因: 1,指针变量没有被初始化 指针变量在创建同时应当被初始化,要么将指针设置为 NULL,要么让它指向合法内存。...并且,类构造函数需要重载,C++规定构造函数于类同名,只有一个名字,如果想用几种不同方法创建对象,只能用重载机制来实现,所以类可以多个同名构造函数

    1.5K20

    【C++】多态

    多态调用指针引用指向对象类型有关,指向是父类那就调用父类函数指向是子类那就调用子类重写函数,这里调用函数只能是虚函数。...:跟调用对象类型有关, // 多态调用:指针引用指向对象有关,指向子类调用子类函数指向父类调用父类函数。...// 而如果是指针引用,他表面上看是基类指针,但他实际指向对象是派生类对象,那么根据指针引用指向是派生类 // 就可以实现派生类或基类函数调用了,而不是像普通调用一样...当一个类里面出现虚函数时,这个类实例化出对象模型就会发生改变,他类成员除变量之外,还会多一个虚表指针,这个虚表指针指向一个数组,这个数组里面存放是类里面虚函数地址。...其本质就是因为如果析构函数不是虚函数,则一定不会发生多态调用,但我们期望在通过基类指针引用调用析构函数行为是多态行为,而不是普通行为,所以就必须将析构函数搞成虚函数,为就是能够满足多态调用条件之一

    53620

    谈谈.net对象生命周期

    如果有足够空间,会调用这个类型构造函数,构造函数会返回一个指向内存中这个新对象引用,这个新对象地址刚好就是下一个对象指针上一次所指向位置。   ...(3)最后,在把引用返回给调用者之前,让下一个对象指针指向托管堆中下一个可用位置。   下面的图解释了在托管堆上分配对象细节。 ?...简单来说,一个根是一个引用,这个引用指向堆上面的一个对象。...严格来说,一个根可以以下几种情况: (1) 指向全局对象引用(尽管C#不支持,但CIL代码允许分配全局对象) (2) 指向任何静态对象 (3) 指向一个应用程序代码中局部对象 (4) 指向传入到一个函数对象参数...在此时,堆上剩余内存空间被压缩,这会导致CLR修改活动应用程序根集合(和对应指针)来指向正确内存位置(这个操作是自动透明)。最后,调整下一个对象指针指向一个可用内存位置。

    1.3K10

    C++中四种多态

    通过基类指针引用使用派生类能力。 这是一个例子。 假设您有各种猫科动物,例如这些猫科动物, ?...cat,tiger和ocelot指针传递给do_meowing函数,该函数期望指向Felid指针。...多态函数调用解析是在运行时通过虚拟表通过间接进行。 另一种解释方式是,编译器不在编译时定位要调用函数地址,而是在程序运行时通过在虚拟表中取消引用指针调用函数。...返回上一个有关max函数示例,这是您如何为两个char *编写max方法, template const char *max(const char *a, const char *b) {...现在,如果我们一个以int作为参数print_int函数,我们还可以将CrazyInt类型对象传递给它, #include void print_int(int a) {

    1.3K20

    硬核 | C++ 基础大全

    作为参数时也不同,传指针实质是传值,传递值是指针地址;传引用实质是传地址,传递是变量地址。 野(wild)指针与悬空(dangling)指针什么区别?如何避免?...指向函数指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致。 其次是用途:调用函数和做函数参数,比如回调函数。...当我们定义一个派生类对象时,编译器检测该类型函数,所以为这个派生类对象生成一个函数指针指向该类型函数表,这个虚函数指针初始化是在构造函数中完成。...派生类中重写了这个虚函数,我们期望着根据对象真实类型不同,而调用各自实现函数,但实际上当我们创建一个派生类对象时,首先会创建派生类基类部分,执行基类构造函数,此时,派生类自身部分还没有被初始化...动态联编规定,只能通过指向基类指针或基类对象引用调用函数,其格式为:指向基类指针变量名->虚函数名(实参表)或基类对象引用名.虚函数名(实参表) 实现动态联编三个条件: 必须把动态联编行为定义为类函数

    1.2K10

    C++:23 再议const用法(下)

    主要开始说如何正确使用const 1.不能将const 修饰任何对象引用指针作为赋值表达式左值。...其中,指向const 对象指向nonconst对象,是不同指针类型。...对象指向对象指针规则类似于对象引用。即,const 类型对象不能直接被nonconst 类型指针所指示(同2);可以使用const 类型指针指向non-const 对象(同3)。...cout<<'\n'<<a<<'\n'<<b<<endl; return 0; } 常函数调用函数调用是这样:常量对象只能调用常成员函数,非常量对象即可以调常成员函数, 也可以调一般成员函数,...();//调用const int & GetData()const {return data;} 常函数只能调常函数,也是由于这个原因 这里插一嘴,面试C++时候经常会问到面试者这样一个问题:类成员函数在后边通过

    39520

    《C++Primer》第六章 函数

    局部对象 在C++语言中,名字作用域,对象有生命周期lifetime: 名字作用域是程序文本一部分,名字在其中可见 对象生命周期是程序执行过程中该对象存在一段时间 函数体是一个语句块,形参和函数体内部定义变量统称为局部变量...值是如何返回 返回一个方式和初始化一个变量或者形参方式完全相同:返回值用于初始化调用一个临时量,该临时量就是调用结果。...不要返回局部对象引用指针 函数完成后,它所占用存储空间也随之被释放掉,这意味着函数终止后局部变量引用指向不再有效内存区域。 3....引用返回左值 函数返回类型决定函数调用是否是左值,调用一个返回引用函数得到左值,其他返回类型返回右值。 我们能为返回类型是非常量引用函数结果赋值。 4....函数指针 函数指针指向函数而非对象函数指针指向某种特定类型,函数类型由它返回类型和形参类型共同决定,与函数名无关。

    72810

    第6章 函数

    包括引用传递和值传递,其中指针参数也是值传递,进行指针拷贝。拷贝之后,两个指针是不同指针,只是它们都指向一个对象。...因为将函数定义成普通引用以下缺点: 非常量引用只能接受非常量对象,不能把 const对象、字面值传递给这种形参。...数组不允许拷贝,所以无法以值传递形式传递数组参数;使用数组时通常会将其转换成指针,所以当为函数传递一个数组参数时,实际传递指向数组首元素指针。数组大小对函数调用没有影响。...此函数意图是作用于一个数组 void print(const int[10]); // 这个维度表示我们期望输入数组多少个元素,实际并不一定!...string对象 } 调用一个返回引用函数得到左值,其他返回类型得到右值。

    1.2K70
    领券