`

C++中的临时对象与无名对象

阅读更多
无名对象典型的三种用法:

void fn(Student& s);

void main()
{
    Student& refs = Student("A"); //左侧纯属举例,一般都是有名:refs = s;
    Student s = Student("B"); //即Student s("B");
    fn(Student("C"));
}


当main结束时,有三个无名对象,和一个s对象被析构。



临时对象

#include <string>
#include <iostream>
using namespace std;
class Person
{
public:
    string pName;
public:
    Person(string pN)
    {
        pName = pN;
    }
};

Person getPerson()
{
    return Person("tem");
}

int main(int argc, char *argv[])
{
    Person p = getPerson();
    cout << "tem?" << p.pName << endl;

    cout << "by" << endl;
    return 0;
}
分享到:
评论

相关推荐

    详解C++ 中的临时对象

    C++中临时对象(Temporary Object)又称无名对象。临时对象主要出现在如下场景。 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象。 Integer inte= Integer(5); //用无名临时对象...

    对C++程序设计语言中对象的深入认识.pdf

    该文从C++程序设计语言的特点出发,论述了对象的基本概念,通过一些实例说明了对象、临时对象、无名对象的定义及作用域(scope)和生命期(life cycle),并探讨了临时对象、无名对象在初始化(initialize)对象或...

    零起点学通C++多媒体范例教学代码

    11.5 创建无名临时对象 11.6 取消创建临时对象 11.7 重载后置自加运算符 11.8 重载加法运算符函数operator+ 11.9 重载赋值运算符函数operator 11.10转换类型运算符 11.10.1 温习调用构造函数实现的类型转换 11.10.2 ...

    零起点学通C++学习_多媒体范例教学代码

    11.5 创建无名临时对象 11.6 取消创建临时对象 11.7 重载后置自加运算符 11.8 重载加法运算符函数operator+ 11.9 重载赋值运算符函数operator 11.10转换类型运算符 11.10.1 温习调用构造函数实现的类型转换 ...

    新手学习C++入门资料

    标准C++的iostream类库中包括了可以支持宽字符的类和对象。用wout替代cout即可。 #include iostream.h int main() { wchar_t wc; wc='b'; wout; wc='y'; wout; wc='e'; wout; return 0; } 说明一下...

    你必须知道的495个C语言问题.pdf

    2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 2.7 我遇到这样声明结构的代码:struct name {int namelen; char namestr[1...

    你必须知道的495个C语言问题

    *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 为什么声明externf(structx*p);给我报了一个晦涩难懂的警告信息? 2.7 我遇到这样声明结构的代码:structname{intnamelen;charnamestr[1];}...

    《你必须知道的495个C语言问题》

    *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 22 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 23 2.7 我遇到这样声明结构的代码:struct name {int namelen; ...

Global site tag (gtag.js) - Google Analytics