public: test(); ~test(); void print(); };
//test.cpp
#include
cout<<\输出无参构造函数\ x=0; }
test::~test() {
cout<<\输出无参析构函数\ }
void test::print() {
cout<<\ }
//main.cpp
#include
using namespace std;
void main() {
test obj1,obj2;
}
obj1.print(); obj2.print();
4.16试设计程序,演示有对象成员时构造成员时构造函数和析构函数的调用顺序。
#include
{
private: int x1; public:
Test1( ) :x1(0) { cout<<\构造函数1被执行\ }
Test1(int i):x1(i) { cout<<\构造函数1被执行\ }
~Test1( ) { cout<<\析构函数1被执行\ } };
class Test2 {
private:
Test1 x2; int x3; public:
Test2(int i,int j ) :x2(i) { x3=j; cout<<\构造函数2被执行\ }
~Test2( ) { cout<<\析构函数2被执行\ } };
void main() {
}
Test2 obj(5,6);
4.17 设计一个含有指针类型数据成员的类,自定义构造函数、拷贝构造函数、析构函数和基本赋值运算符函数。
#include
{
private: int age; char *name; public:
student(int i,char *n=\ { name=new char [strlen(n)+1]; strcpy(name ,n); }
~student() { delete []name; }
student(const student & s):age(s.age) { name=new char[strlen(s.name)+1]; strcpy(name,s.name); }
student & operator =(student & s) { if(this!=&s) { age=s.age; delete []name; name=new char[strlen(s.name)+1]; strcpy(name,s.name); } return *this; } display() { cout<<\ } };
void main() {
student s1(20,\ s1.display(); student s2=s1; s2.display();
student s3(21,\ s3.display();