您的位置:首页 > 编程语言 > C语言/C++

《C++捷径教程》读书笔记--Chapter 12--类的深入学习(完结)

2006-04-12 21:25 453 查看
//--《C++捷径教程》读书笔记--Chapter 12--类的深入学习(完结)
//--Chapter 12--类的深入学习
//--04/12/2006 Wed.
//--Computer Lab
//--Liwei

 

//--程序#4  使用重载构造函数
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

class timer{
 int seconds;
public:
 timer(char *t) { seconds=atoi(t); }
 timer(int t) { seconds=t; }
 timer(int min,int sec) { seconds=min*60+sec; }
 void run();
};

void timer::run()
{
 clock_t tl;
 tl=clock();
 while( (clock()/CLOCKS_PER_SEC-tl/CLOCKS_PER_SEC)<seconds );

 cout<<"/a";
}

int main()
{
 timer a(10), b("20"), c(0,3);

 a.run();
 b.run();
 c.run();

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

 

//--程序#5  说明动态初始化得用法
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

class timer{
 int seconds;
public:
 timer(char *t) { seconds=atoi(t); }
 timer(int t) { seconds=t; }
 timer(int min,int sec) { seconds=min*60+sec; }
 void run();
};

void timer::run()
{
 clock_t tl;
 tl=clock();
 while( (clock()/CLOCKS_PER_SEC-tl/CLOCKS_PER_SEC)<seconds );

 cout<<"/a";
}

int main()
{
 timer a(10);
 a.run();

 cout<<"Enter number of seconds: ";
 char str[80];
 cin>>str;
 timer b(str);
 b.run();

 cout<<"Enter min and sec: ";
 int min,sec;
 cin>>min>>sec;
 timer c(min,sec);
 c.run();

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

 

//--程序#6  说明对象赋值
#include <iostream>
using namespace std;

class myclass{
 int a,b;
public:
 void setab(int i,int j) {a=i; b=j;}
 void showab();
};

void myclass::showab()
{
 cout<<"a is "<<a<<'/n';
 cout<<"b os "<<b<<'/n';
}

int main()
{
 myclass ob1,ob2;

 ob1.setab(10,20);
 ob2.setab(0,0);

 cout<<"ob1 before assignment: /n";
 ob1.showab();

 cout<<"ob2 before assignment: /n";
 ob2.showab();

 cout<<'/n';

 ob2=ob1;

 cout<<"ob1 after assignment:/n";
 ob1.showab();

 cout<<"ob2 after assignment:/n";
 ob2.showab();

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

 

//--程序#7  说明对象作为参数传递
#include <iostream>
using namespace std;

class OBJ{
 int i;
public:
 void set_i(int x) { i=x; }
 void out_i() { cout<<i<<" "; }
};

void f(OBJ x)
{
 x.out_i();
 x.set_i(100);
 x.out_i();
}

int main()
{
 OBJ o;
 o.set_i(10);
 f(o);
 o.out_i();

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

 

//--程序#8  说明构造、析构、对象传递
#include <iostream>
using namespace std;

class myclass{
 int val;
public:
 myclass(int i) { val=i; cout<<"Constructing./n";}
 ~myclass() { cout<<"Destructing./n"; }
 int getval() { return val;}
};

void display(myclass ob)
{
 cout<<ob.getval()<<'/n';
}

int main()
{
 myclass a(10);
 display(a);

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

//--程序#9  说明对象传递时得问题
#include <iostream>
#include <cstdlib>
using namespace std;

class myclass{
 int *p;
public:
 myclass(int i);
 ~myclass();
 int getval() { return *p; }
};

myclass::myclass(int i)
{
 cout<<"allocating p./n";
 p=new int;
 *p=i;
}

myclass::~myclass()
{
 cout<<"freeint p./n";
 delete p;
}

void display(myclass ob)
{
 cout<<ob.getval()<<'/n';
}

int main()
{
 myclass a(10);
 display(a);

 return 0;
}

 

//=================================================================//
//                              END                                //
//=================================================================//

//--程序#10  说明对象传递时得问题
#include <iostream>
#include <cstdlib>
using namespace std;

class myclass{
 int *p;
public:
 myclass(int i);
 ~myclass();
 int getval() { return *p; }
};

myclass::myclass(int i)
{
 cout<<"allocating p./n";
 p=new int;
 *p=i;
}

myclass::~myclass()
{
 cout<<"freeint p./n";
 delete p;
}

void display(myclass &ob)
{
 cout<<ob.getval()<<'/n';
}

int main()
{
 myclass a(10);
 display(a);

 return 0;
}

 

//=================================================================//
//                              END                                //
//=================================================================//

//--程序#11  说明返回对象
#include <iostream>
#include <cstring>
using namespace std;

class sample{
 char s[80];
public:
 void show() { cout<<s<<'/n'; }
 void set(char *str) { strcpy(s,str); }
};

sample input()
{
 char instr[80];
 sample str;

 cout<<"Enter a string: ";
 cin>>instr;

 str.set(instr);

 return str;
}

int main()
{
 sample ob;

 ob=input();
 ob.show();

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

//--程序#12  说明返回对象
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

class sample{
 char *s;
public:
 sample() { s=0; }
 ~sample()
 { //if(s) delete []s;
 cout<<"Freeing s./n"; }
 void show() { cout<<s<<'/n'; }
 void set(char *str);
};

void sample::set(char *str)
{
 s=new char[strlen(str)+1];
 strcpy(s,str);
}

sample input()
{
 char instr[80];
 sample str;

 cout<<"Enter a string: ";
 cin>>instr;

 str.set(instr);

 return str;
}

int main()
{
 sample ob;

 ob=input();
 ob.show();

 return 0;
}

//=================================================================//
//                              END                                //
//=================================================================//

//--程序#13  说明复制构造函数
#include <iostream>
#include <cstdlib>
using namespace std;

class myclass{
 int *p;
public:
 myclass(int i);
 myclass(const myclass &ob);
 ~myclass();
 int getval() { return *p; } 
};

myclass::myclass(const myclass &ob)
{
 p=new int;
 *p=*ob.p;
 cout<<"Copy constructor called./n";
}

myclass::myclass(int i)
{
 cout<<"Allocating p./n";
 p=new int;
 *p=i;
}

myclass::~myclass()
{
 cout<<"Freeing p./n";
 delete p;
}

void display(myclass ob)
{
 cout<<ob.getval()<<'/n';
}

int main()
{
 myclass a(10);
 display(a);

 return 0;
}
//=================================================================//
//                              END                                //
//=================================================================//

//--程序#14  说明复制构造函数
#include <iostream>
#include <cstdlib>
using namespace std;

class myclass{
 int *p;
public:
 myclass(int i);
 myclass(const myclass &ob);
 ~myclass();
 int getval() { return *p; } 
};

myclass::myclass(const myclass &ob)
{
 p=new int;
 *p=*ob.p;
 cout<<"Copy constructor called./n";
}

myclass::myclass(int i)
{
 cout<<"Allocating p./n";
 p=new int;
 *p=i;
}

myclass::~myclass()
{
 cout<<"Freeing p./n";
 delete p;
}

int main()
{
 myclass a(10);
 myclass b=a;

 return 0;
}
//=================================================================//
//                              END                                //
//=================================================================//
//--程序#15  说明复制构造函数
#include <iostream>
using namespace std;

class myclass{
public:
 myclass() { cout<<"Normal constructor./n"; }
 myclass(const myclass &obj) { cout<<"Copy constructor./n"; }
};

myclass f()
{
 myclass ob;
 return ob;
}

int main()
{
 myclass a;
 a=f();

 return 0;
}
//=================================================================//
//                              END                                //
//=================================================================//

//--程序#16  说明this
#include <iostream>
using namespace std;

class cl{
 int i;
public:
 void load_i(int val) { this->i=val; }
 int get_i() { return this->i; }
};

int main()
{
 cl o;

 o.load_i(111);
 cout<<o.get_i()<<endl;

 return 0;
}
//=================================================================//
//                              END                                //
//=================================================================//
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息