`
daojin
  • 浏览: 690175 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

函数返回应该是个右值吧,为啥能放在左边(红色标示的部分)?

 
阅读更多
1楼
class A1
{
public:
    A1()
    {
        std::cout<<"A1()"<<std::endl;
    }
    A1(const A1& a1)
    {
        std::cout<<"A1(const A1& a1"<<std::endl;
    }
    A1& operator=(const A1& a1)
    {
        std::cout<<"operator=(const A1& a1)"<<std::endl;
    }
    int* pi;
};
A1 GetA()
{
    std::cout<<" GetA() begin"<<std::endl;
    A1 a1;
    std::cout<<" GetA() end"<<std::endl;
    return a1;
} 
int main()
{
   A1 a1;
   GetA() = a1;
}
0
0
分享到:
评论

相关推荐

    深入理解c++右值引用1

    右值引用可以被视为指向右值的引用,这使得我们能够更加有效地利用临时对象,并允许将资源从一个对象“移动”到另一个对象,而不仅仅是复制。 首先,我们要了解左值和右值的概念。左值(lvalue)是指可以被赋值、...

    c++11 右值引用和移动语义(csdn)————程序.pdf

    右值引用是对一个右值进行引用的类型,需立即初始化,引用只是对该对象的一个别名。右值引用主要用于移动语义和完美转发,前者需要有修改右值的权限,const 可使用左值引用。 左值和右值的概念: * 左值:左值...

    右值引用和移动语义1

    * std::forward 是一个类型转换函数,用于将参数转换为右值引用 * std::move 是一个类型转换函数,用于将参数转换为右值引用 六、应用场景 右值引用和移动语义广泛应用于 C++11 中的容器类、智能指针、字符串类等...

    C++11右值引用和转发型引用教程详解

    C++11右值引用和转发型引用教程详解 C++11标准引入了右值引用(rvalue ...本教程详细介绍了右值引用和转发型引用的概念、类型、语法、用法和应用场景,为读者提供了一个全面的了解和掌握右值引用和转发型引用的机会。

    右值引用、移动语义和完美转发1

    当一个对象即将被销毁(即成为将亡值,也称为xvalue)时,可以使用`std::move()`函数将其转换为右值引用,表明资源可以被移动而非复制。例如: ```cpp class Copyable { public: Copyable() {} Copyable(const ...

    左值与右值的引用

    这是关于C++左值与右值引用的课程视频,课程易于理解,可以很快掌握

    muluoleiguo#interview#右值引用1

    由于右值通常不具有名字,所以我们一般只能通过右值表达式获得其引用,比如:假设ReturnRvalue()函数返回一个右值,那么上述语句声明了一个名为a的右值引用

    C++中的左值和右值

     这两个概念在C语言中比较容易理解:左值能放在赋值语句的左边,右值不能。但是当来到C++时,二者的理解比较复杂了(PS:有对象真是麻烦)  简单的归纳:  · 当一个对象被用作右值的时候,用的是对象的值...

    C、C++函数辞典.chm

    C++中的函数可以分为普通函数、成员函数、友元函数、重载函数、模板函数、静态成员函数等。其中,成员函数是类的一部分,如构造函数和析构函数,用于对象的创建和销毁;友元函数可以访问类的私有和保护成员;重载...

    函数型指针的定义及使用

    函数型指针可以被赋值为函数变量的地址,然后可以使用函数型指针来调用函数。例如: ```c int add(const int a, const int b) { return a + b; } int main(void) { int (*fp)(const int a, const int b); fp = ...

    左值和右值

    这也是为什么我们无法对右值进行取地址操作的原因——它没有一个固定的存储位置。例如,尝试`&b + 100;`这样的操作是没有意义的,因为`b + 100`的结果不是一个有固定地址的实体。 ### 左值与右值之间的转换 在某些...

    程序设计-怎样调用函数.pptx

    通过本节的学习,我们了解了函数调用相关的知识点,包括函数调用语句、函数表达式、函数参数、函数定义、函数调用时数据的传递、函数返回值、函数类型等。合理定义和使用函数是实现大程序的关键。

    关于c++的 右值 右值引用 move

    当一个右值引用被初始化为一个右值时,可以调用移动构造函数(Move Constructor),而不是传统的拷贝构造函数,移动构造函数通常能更高效地转移资源,因为它不需要创建新的对象副本。 C++中的`std::move`是一个关键...

    c++的左值右值 i++与++i的区别.docx

    在 C++ 编程语言中,左值(Lvalue)和右值(Rvalue)是两个重要的概念,它们在变量和表达式中的角色不同,理解这两个概念对于编写正确和高效的代码非常重要。 左值(Lvalue)是指可以出现在赋值语句左侧的表达式,...

    C++实现 类string的 普通构造函数, 拷贝构造函数 析构函数 和赋值函数

    在自定义类设计中,通常需要实现四个特殊成员函数:普通构造函数、拷贝构造函数、析构函数和赋值运算符。这些函数是面向对象编程中的核心组成部分,对于理解和创建高效、安全的对象至关重要。 **普通构造函数**: ...

    APIHook、InlineHook库,使用C++11编写,可将回调函数绑定到类成员函数

    另外,C++11的右值引用和移动语义提高了代码的性能,使得函数对象的复制更加高效。在本库中,`corehook.hpp`可能包含了APIHook的核心实现,`opcode.hpp`可能涉及到了汇编级别的操作,而`corefunctor.hpp`可能是关于...

    31_c++中的左值引用与右值引用1

    在C++编程语言中,左值引用和右值引用是两个关键的概念,它们与对象的生命周期、内存管理和性能优化紧密相关。左值引用和右值引用的区分主要基于对象是否可寻址和是否临时。 左值(Left-Value)是指可以被赋值并且...

    浅谈C++左值引用和右值引用

    但是,右值引用不能直接绑定到左值,除非通过`std::move`函数,该函数可以将左值转换为对应的右值引用类型,如`int &&r6 = std::move(r2);`。 左值引用和右值引用的一个关键区别在于,左值引用通常表示对象的身份,...

    C++函数速查C++函数

    在C++编程中,函数是代码组织的基本单元,它们可以执行特定的任务,并通过参数传递数据,返回结果。本资源名为"C++函数速查",是一个以CHM(Microsoft HTML Help)格式编写的工具,方便开发者快速查找和理解C++中的...

    C++11的右值引用的具体使用

    std::move是一个库函数,它将一个左值转换为右值引用。在实际应用中,std::move并不移动任何东西,而是通知编译器,该对象不再需要,可以被安全地“移动”。这样,编译器就能够调用移动构造函数而不是拷贝构造函数。...

Global site tag (gtag.js) - Google Analytics