C++引用放的错误
来源:百度知道 编辑:UC知道 时间:2024/06/23 00:42:45
#include<iostream>
using namespace std;
class A
{
public:int const get(){return i;}
A(int){i=1; cout<<"构造函数执行"<<endl;}
A(A&a){i=a.i; cout<<"复制构造函数执行"<<endl;}
~A(){i=0; cout<<"析构函数执行"<<endl;}
private:
int i;
};
A func()
{
cout<<"func函数执行中!"<<endl;
A a(23);
cout<<"对象a的地址:"<<&a<<endl;
return a;
}
int main()
{
A&r=func();
cout<<"对象a的复制的地址:"<<&r<<endl;
cout<<r.get()<<endl;
return 0;
}
为什么返回后值为1而不是我写的23?
using namespace std;
class A
{
public:int const get(){return i;}
A(int){i=1; cout<<"构造函数执行"<<endl;}
A(A&a){i=a.i; cout<<"复制构造函数执行"<<endl;}
~A(){i=0; cout<<"析构函数执行"<<endl;}
private:
int i;
};
A func()
{
cout<<"func函数执行中!"<<endl;
A a(23);
cout<<"对象a的地址:"<<&a<<endl;
return a;
}
int main()
{
A&r=func();
cout<<"对象a的复制的地址:"<<&r<<endl;
cout<<r.get()<<endl;
return 0;
}
为什么返回后值为1而不是我写的23?
A a(23);
//该句话创建A类型对象,赋予23为参数,23为int类型而不是A类型
A(int){i=1;cout<<"复制构造函数执行"<<endl;}
//所以执行改构造函数,i被赋予1,而不是23,参数没有用到语句中,可以改为A(int x){i=x;cout<<"复制构造函数执行"<<endl;}
A(int){i=1; cout<<"构造函数执行"<<endl;}
A a(23);
声明定义时未指定形参,虽然23是int类型,但没给载体让它装23让它传进去,所以任意的int数据最后显示的还是i=1,建议类的声明和定义分开,这是商业代码的规范
ASP.NET(C#)运行错误:System.NullReferenceException: 未将对象引用设置到对象的实例
ASP 数据库连接文件的引用错误
引用SqlDataSource的参数出现错误.
请问C语言中“无效内存引用或占用内存超限”的错误一般是怎么引起的?
“0x76684446”指令引用的“0x0169c580"内存,因“0xc0000102”的错误状态而无法将请求的数据放存内存
0x76684446”指令引用的“0x0107fa80"内存,因“0xc0000102”的错误状态而无法将请求的数据放存内存
C#中引用C编译的DLL
c语言的错误
C语言的错误
C++.net的错误