vs2010c++编译的时候出现error C2628: “void”是非法的,为什么?求指教解决方案
vs2010c++编译的时候出现error C2628: “void”是非法的,为什么??求指教
#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;
struct Exmp1
{
Exmp1()//默认构造函数,
{
cout<<"Exmp1()"<<endl;
}
Exmp1(const Exmp1&)//复制构造函数
{
cout<<"Exmp1(const Exmp1&)"<<endl;
}
Exmp1& Exmp1::operator=(const Exmp1& rhs)//“=”-->赋值操作符的重载
{
cout<<"Exmp1& Exmp1::operator=(const Exmp1& rhs)"<<endl;
return *this;
}
~Exmp1()//析构函数
{
cout<<"~Exmp1()"<<endl;
}
}
void fun1(Exmp1 obj){};
void fun2(Exmp1& obj){};
Exmp1 fun3()//普通函数,返回Exmp1类型.无参
{
Exmp1 obj;
return obj;
}
int main()
{
Exmp1 obj;//创建一个Exmp1的对象,这里调用了默认构造函数
Exmp1 eobj;
fun1(obj);//这里调用复制构造函数
fun1(eobj);
eobj=fun3();
Exmp1 *p=new Exmp1;//调用默认构造函数动态创建Exmp1类型的新对象
vector<Exmp1> evec(3);//创建一个存放Exmp1类型对象的容器并
delete p;//调用析构函数释放动态创建的内存
return 0;
}
------解决方案--------------------
请自行对比,func函数附近
#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;
struct Exmp1
{
Exmp1()//默认构造函数,
{
cout<<"Exmp1()"<<endl;
}
Exmp1(const Exmp1&)//复制构造函数
{
cout<<"Exmp1(const Exmp1&)"<<endl;
}
Exmp1& Exmp1::operator=(const Exmp1& rhs)//“=”-->赋值操作符的重载
{
cout<<"Exmp1& Exmp1::operator=(const Exmp1& rhs)"<<endl;
return *this;
}
~Exmp1()//析构函数
{
cout<<"~Exmp1()"<<endl;
}
}
void fun1(Exmp1 obj){};
void fun2(Exmp1& obj){};
Exmp1 fun3()//普通函数,返回Exmp1类型.无参
{
Exmp1 obj;
return obj;
}
int main()
{
Exmp1 obj;//创建一个Exmp1的对象,这里调用了默认构造函数
Exmp1 eobj;
fun1(obj);//这里调用复制构造函数
fun1(eobj);
eobj=fun3();
Exmp1 *p=new Exmp1;//调用默认构造函数动态创建Exmp1类型的新对象
vector<Exmp1> evec(3);//创建一个存放Exmp1类型对象的容器并
delete p;//调用析构函数释放动态创建的内存
return 0;
}
------解决方案--------------------
请自行对比,func函数附近
- C/C++ code
#include "iostream" #include "vector" using namespace std; struct Exmp1 { Exmp1()//默认构造函数, { cout<<"Exmp1()"<<endl; } Exmp1(const Exmp1&)//复制构造函数 { cout<<"Exmp1(const Exmp1&)"<<endl; } Exmp1& Exmp1::operator=(const Exmp1& rhs)//“=”-->赋值操作符的重载 { cout<<"Exmp1& Exmp1::operator=(const Exmp1& rhs)"<<endl; return *this; } ~Exmp1()//析构函数 { cout<<"~Exmp1()"<<endl; } }; void fun1(Exmp1 obj){} void fun2(Exmp1& obj){} Exmp1 fun3()//普通函数,返回Exmp1类型.无参 { Exmp1 obj; return obj; } int main() { Exmp1 obj;//创建一个Exmp1的对象,这里调用了默认构造函数 Exmp1 eobj; fun1(obj);//这里调用复制构造函数 fun1(eobj); eobj=fun3(); Exmp1 *p=new Exmp1;//调用默认构造函数动态创建Exmp1类型的新对象 vector<Exmp1> evec(3);//创建一个存放Exmp1类型对象的容器并 delete p;//调用析构函数释放动态创建的内存 return 0; }