写出以下程序运行结果。 class myclass{ int a; public: myclass(int _a=0):a(_a){cout<<"1";} myclass(myclass& x){a=x.a;cout<<"2";} ~myclass(){cout<<a;cout<<"3";} void Seta(int _a=0){a= _a;} }; int main() { myclass d1(5), d2(d1); myclass d3; return 0; }
时间: 2023-06-04 11:06:13 浏览: 84
C#例子代码 A0040_Indexer
) {cout<<"2";} ~myclass(){cout<<"3";} }; int main(){ myclass obj1(1); myclass obj2(obj1); return 0; }
输出结果是:1123
解释:首先定义了一个类 myclass,有一个 int 类型的私有成员变量 a,构造函数有两种形式:第一个是带有默认参数值的参数构造函数,第二个是拷贝构造函数。析构函数实现对象销毁操作。在 main 函数中先定义了一个 obj1 对象,使用第一个构造函数进行构造并输出 "1",后面使用 obj1 的值初始化了 obj2,因此会调用拷贝构造函数构造 obj2,并输出 "2"。程序结束时,先销毁 obj2,因此会输出 "3",再销毁 obj1,同样输出 "3"。因此输出结果是 "1123"。
阅读全文