我尝试使用#include <iostream>
#include <string>
using namespace std;
int main(){
string str,rstr;
int len,i=0;
cin>>str;
len = str.length();
while(str[i]!='\0'){
rstr[i++]=str[--len];
}
rstr[str.length()]='\0';
cout<<rstr;
return 0;
}
运算符来实例化特定类,而不是new
关键字后面的类。
我试着拥有一种&#34;工厂&#34;对于抽象类。
在我看来,这是不可能的,但让我们仔细检查!
此代码编译,但主代码将其视为new
(而不是Test
类)
TestImpl
答案 0 :(得分:21)
请注意,对于每个new expression,将执行以下两项操作:
operator new
。所以operator new
只分配内存,不构造对象。这意味着,对于Test * t = new Test();
,仍然会在由重载Test
分配的内存上构建operator new
;即使你在TestImpl
内构建了一个operator new
,但在operator new
完成后,很快就会覆盖在同一个内存中。