相关疑难解决方法(0)

在c'tor初始化列表中将临时绑定到const引用

C++ 03中的第12.2.5节说" 在构造函数的ctor-initializer(12.6.2)中绑定到引用成员的临时绑定一直存在,直到构造函数退出 "
所以我尝试了以下程序

#include<iostream>
using namespace std;

struct foo
{
  foo()
  {
    cout<<"foo c'tor"<<endl;
  }
  ~foo()
  {
    cout<<"foo d'tor"<<endl;
  }
};

struct bar
{
  const foo &ref;
  bar():ref(foo()) 
  {
    cout<<"bar c'tor"<<endl;
  }

};

int main()
{
  bar obj;
}    
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

foo c'tor
foo d'tor
bar c'tor
Run Code Online (Sandbox Code Playgroud)

现在根据标准,在条形码c'tor的c'tor init-list中由foo()生成的临时性将在bar'c'tor之后被销毁,所以foo d'tor应该在之后打印,bar c'tor
但它是相反的.
请解释原因.

c++ const-reference temporaries

12
推荐指数
1
解决办法
1631
查看次数

创建对新对象的引用

我刚刚学习C++,我遇到了以下难题:

作为一个C++新手,我读过使用引用而不是指针(如果可能的话)通常是一个好主意,所以我想尽早养成这个习惯.因此,我有很多具有一般形式的方法

void myMethod(ParamClass const& param);
Run Code Online (Sandbox Code Playgroud)

现在,我想知道调用这些方法的最佳方法是什么.当然,每个调用都需要一个不同的对象作为参数传递,据我所知,创建它的唯一方法是new运算符,所以现在我正在做以下事情:

myObject.myMethod(*new ParamClass(...));
Run Code Online (Sandbox Code Playgroud)

虽然这种方法完全有效,但我想知道是否还没有其他已经建立的"c ++方法".

谢谢您的帮助!担

c++ parameter-passing reference-type

11
推荐指数
1
解决办法
2万
查看次数