`
7090
  • 浏览: 273403 次
  • 性别: 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++对象模型 chm

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

    C++ 面向对象教程 21 courses#

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    Effective C++

    条款31:千万不要返回局部对象的引用,也不要返回函数内部用NEW初始化的指针 条款32:尽可能推迟变量的定义 条款33:明智的使用INLINE 条款34:将文件间的编译依赖性阡至最低 5、继承与面向对象设计 条款35:使公有继承...

    C++编程思想 例子和叙述讲解C++编程

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    C++编程思想 编程

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    C++编程思想.pdf

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    逆向C++ (PDF版) [评价可免费]

    这些年来,逆向工程分析人员一直是凭借着汇编和C的知识对大多数软件进行逆向工程的,但是,现在随着越来越多的应用软件和恶意程序转而使用C++进行开发,深入理解C++面向对象方式开发的软件的反汇编技术就显得越发的...

    新手学习C++入门资料

    C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。...

    C++ 语言 详细教程电子版

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    Thinking in C++高清版

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    c++ 编程思想 (高清pdf)

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    C++ Primer第四版【中文高清扫描版】.pdf

    Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++ 先驱Barbara E. Moo...

    C++ 编程思想 打印版 pdf

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    C++编程思想 PDF版 电子书

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    C++编程思想 打印版 pdf

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

    C++高级参考手册 完全自学 内容详细 讲解通俗易懂

    1.2.4 系统更容易表达和理解 1.2.5 “库”使你事半功倍 1.2.6 错误处理 1.2.7 大程序设计 1.3 方法学介绍 1.3.1 复杂性 1.3.2 内部原则 1.3.3 外部原则 1.3.4 对象设计的五个阶段 1.3.5 方法承诺什么 ...

    C++编程思想(用简单的例子和简练的叙述讲解C++编程)

    1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺...

Global site tag (gtag.js) - Google Analytics