【发布时间】:2019-07-07 08:41:31
【问题描述】:
当重载运算符-> 时,最终必须返回一个指针。如果此指针指向函数内部创建的对象,例如:
struct Something {
char c;
Something(char k){
c = k;
}
};
struct Hello {
int a;
Something* operator->(){
Something s(a);
return &s;
}
};
然后取消引用会导致未定义的行为(如Can a local variable's memory be accessed outside its scope?):
Hello h {5};
cout << h->c;
如果是这样,是否可以解决,仍然使用operator->?
【问题讨论】:
-
你为什么要这样做?你可以添加静态关键字,它会工作,但我不明白你的软件设计。
-
@nivpeled 这比这个问题要复杂得多。
-
operator->是一个完全正常的函数。名称和语法有些不寻常,但它们只是糖。 -
inline与此无关。
标签: c++ scope operator-overloading