#include<iostream> #include<cstring> using namespace std; class Student { int age; char *name; public: Student ( ):age(18) { name = new char[10]; strcpy(name,"noName"); cout<<"default construct "<<endl; } Student (int a , char *str) { A-4 name = new char[strlen(str)+1]; strcpy(name,str); age= a>0 ? a: 0; cout<<"construct "<<name<<endl; }~ Student () { cout<<"destruct "<<name<<endl; if(name )delete[] name; } }; int main() { Student * pp = new Student (18,"Zhang"); Student p; delete pp; return 0输出什么
时间: 2024-03-10 08:46:41 浏览: 90
使用include <iostream>时一定要加using namespace std
这段代码的输出应该是:
```
construct Zhang
default construct
destruct Zhang
destruct noName
```
首先,通过 `Student * pp = new Student (18,"Zhang");` 创建了一个名为 pp 的指向堆上 Student 对象的指针,并调用了带参数的构造函数,输出了 `construct Zhang`。
然后,通过 `Student p;` 创建了一个名为 p 的 Student 对象,并调用了默认构造函数,输出了 `default construct`。
接着,通过 `delete pp;` 删除了在堆上创建的 Student 对象,调用了析构函数,输出了 `destruct Zhang`。
最后,程序结束时,会自动调用 p 对象的析构函数,输出了 `destruct noName`。
阅读全文