`
7090
  • 浏览: 278516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对c++方法返回对象的理解

 
阅读更多
今天更深刻的认识到了通过方法返回一个对象或者数组是不可以的,因为c++在方法结束的时候,对对象跟数组资源已经进行了释放,所以再使用已经释放的资源错误是未知的,
P    getP()
{
    P p;
    return p;
}


同样如果返回的该对象或数组的指针是不行的,因为资源也被释放了,指针指向的是已经释放了的资源
P*    getP()
{
    P p;
    return &p;
}


那么,要怎么做呢,可以new 一个指针,因为new出来的资源,需要我们手动进行删除,在方法结束时,系统不会对其进行释放

P*    getP()
{
    P* p = new  P;
    return p;
}


这样就可以了, 还有就是可以通过方法参数传入一个对象引用或者对象指针,然后在方法里面对其进行操作
void    getP(P* p)
{
    ...
}
void    getP(P& p)
{
    ...
}




分享到:
评论

相关推荐

    C++ 类与对象习题

    根据给定的文件信息,我们可以总结出关于C++类与对象的基本...这些知识点覆盖了类的基本概念、构造函数和析构函数的使用、封装性、类域以及静态成员等重要的概念,对于初学者理解和掌握C++中的面向对象编程非常有帮助。

    c++ 类和对象 讲义

    在C++语言中,类是对对象的抽象描述,而对象是一个实体,它反映了客观事物的属性。例如,时钟的时、分、秒的值。因此,类的数据成员需要对数据成员赋初值。 二、构造函数 构造函数是一种特殊的成员函数,其功能由...

    C++l临时对象

    3. **函数返回对象值**:当函数返回一个对象值时,会创建一个临时对象用于存储返回的对象。例如: ```cpp Integer Func() { Integer itgr; return itgr; } int main() { Integer in; in = Func(); // ...

    C++面向对象程序设计PDF电子书与参考答案

    C++是一种强大的、通用的编程语言,以其支持面向对象编程(OOP)而闻名。面向对象编程是一种编程范式,它以对象为中心,通过封装、...通过实践和解决习题,读者能够深化对C++面向对象编程的理解,进一步提升编程技能。

    面向对象程序设计(C++)课件

    理解类与对象的关系是学习C++ OOP的基础。 2. **封装**:封装是OOP的核心概念之一,它隐藏了对象内部的实现细节,只暴露对外接口。C++通过访问修饰符(如public、private和protected)来实现封装,确保数据的安全性...

    c++类和对象习题答案

    通过这份习题答案,学习者可以巩固对C++类和对象的理解,掌握面向对象编程的基本技巧,并通过实例来加深对概念的应用。解题过程可以帮助检查对这些概念的掌握程度,并通过问题解决进一步提升编程能力。

    C++面向对象程序设计上机考试题库.pdf

    本题库展示了面向对象程序设计在C++中的实际应用,题目包含了多个具有代表性...通过对本题库的学习与实践,学生可以加深对C++面向对象程序设计的理解,培养良好的编程习惯,并在实际编程中灵活运用面向对象的编程思想。

    C++面向对象复习资料

    综上所述,这份C++面向对象复习资料涵盖了面向对象编程的核心要素,对于理解和掌握C++的OOP理念至关重要。通过学习这些概念,开发者能够编写出更高效、可维护和可扩展的代码。无论你是初学者还是经验丰富的开发者,...

    C++面向对象复习资料

    面向对象是C++编程的核心特性,它包括三...通过上述知识点,我们可以深入理解C++面向对象编程的基本原理和实践方法,这对于学习和复习C++是非常重要的。同时,掌握好这些概念有助于编写出高效、安全且易于维护的代码。

    深入探索c++对象模型

    这本书旨在帮助开发者理解C++背后的底层机制,包括类、对象、继承、多态等概念在内存中的实际表示,以及编译器如何实现这些特性。 1. **C++对象模型**:C++对象模型是C++编程的基础,它描述了在C++程序中类和对象是...

    深度探索C++对象模型 chm

    深度探索C++对象模型 chm ...C++通过new来分配内存,new的参数是一个表达式,该表达式返回需要分配的内存字节数,这是我以前掌握的关于new的知识,下面看看通过这本书,使我们能够更进一步的了解到些什么。

    面向对象的程序设计c++ 源代码

    描述中提到的是《面向对象的程序设计C++》的第二版源代码,这通常是一本教材或指南的配套材料,旨在帮助读者通过实践加深对理论的理解。源代码提供了示例程序,涵盖了C++的面向对象特性,包括构造函数、析构函数、...

    c++实现游戏开发中常用的对象池(含源码)

    通过阅读和实践这些代码,开发者可以提升对C++内存管理和设计模式的理解,进而提高游戏开发中的性能优化能力。 总之,对象池是一种重要的性能优化技术,对于游戏开发特别是实时性要求高的场景,它能显著减少内存...

    c++面相对象程序设计课件

    以上内容是C++面向对象程序设计的基础,学习过程中,会逐步理解并掌握这些概念,为成为熟练的C++开发者打下坚实基础。通过1到13章的学习,你将能构建起完整的面向对象编程思维,能够独立设计和实现复杂的C++程序。

    表达式计算C++面向对象版

    首先,我们要理解C++中的面向对象编程(Object-Oriented Programming,OOP)。OOP是C++的核心特性,它通过类(Class)和对象(Object)来组织代码,提供数据抽象、封装、继承和多态性等概念。在这个表达式计算项目中...

    (麻省理工免费课程)C语言内存管理和C++面向对象编程

    在《麻省理工免费课程:C语言内存管理和C++面向对象编程》这一课程中,首先对C语言进行了介绍。C语言是一种历史悠久且功能强大的编程语言,尽管有人认为它已经过时,但它仍然是许多系统级编程任务的首选工具。C语言以...

    c++面向对象程序设计杜茂康 课后习题代码及结果

    【C++面向对象程序设计】本篇主要涉及C++的基础知识和面向对象编程的基本概念,通过杜茂康老师的课程习题来深入理解这些概念。 1. **C++基础**: - **数据输入输出**:在实验一中,通过`cin`和`cout`进行数据的...

    C++面向对象_PPT_李晋江版

    李晋江版的"C++面向对象程序设计"课程可能涵盖了以上这些核心概念,通过PPT形式进行讲解,帮助学习者理解并掌握C++的面向对象编程技术。通过深入学习和实践,开发者能够利用C++的面向对象特性构建复杂、可维护的软件...

    Android调用Jni返回自定义对象

    要从JNI返回这样的自定义对象,我们需要在JNI层创建一个对应的C++类,并实现相同的功能。这个C++类需要包含对应的成员变量和方法。例如: ```cpp #include #include struct MyCustomObject { int id; std::...

Global site tag (gtag.js) - Google Analytics