feat: 统一 cpp 文件编码格式为 utf-8

This commit is contained in:
tracyxiong1
2023-01-02 20:39:00 +08:00
parent ade7173887
commit 368eda305f
63 changed files with 327 additions and 327 deletions

View File

@@ -1,16 +1,16 @@
#include<iostream>
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ע<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>
//另一种注释方法
#if 0
asd
#endif
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
//打开注释
//条件编译指令
#if 1
asData
#endif

View File

@@ -1,6 +1,6 @@
#include<iostream>
using namespace std;
//<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ַ
//相同的内存地址
union myun
{
struct { int x; int y; int z; }u;
@@ -11,7 +11,7 @@ int main()
a.u.x =4;
a.u.y =5;
a.u.z =6;
a.k = 0; //<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>int<EFBFBD>ռ<EFBFBD>ֵ
a.k = 0; //覆盖掉第一个int空间值
printf("%d %d %d %d\n",a.u.x,a.u.y,a.u.z,a.k);
system("pause");
return 0;

View File

@@ -1,4 +1,4 @@
//<EFBFBD><EFBFBD>cin<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><EFBFBD>пհ׾Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD><EFBFBD>ַ<EFBFBD>ʱ<EFBFBD><EFBFBD>cin<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
//cin输入字符串数据时如果字符串中含有空白就不能完整输入。因为遇到空白字符时cin就认为字符串结束了。
#include<iostream>
using namespace std;
int main(int argc, char const *argv[])
@@ -11,8 +11,8 @@ int main(int argc, char const *argv[])
return 0;
}
/*
<EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>
若a的内容是
this is a string!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
就难以输入啦!
这样的数据应用输入流类的成员函数输入
*/

View File

@@ -1,6 +1,6 @@
#include<iostream>
using namespace std;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>
//函数原型
//put(char c)
//write(const char*c, int n)
int main(){

View File

@@ -7,11 +7,11 @@ int main(){
double d=-1234.8976;
cout<<setw(30)<<left<<setfill('*')<<c<<"----L1"<<endl;
cout<<setw(30)<<right<<setfill('*')<<c<<"----L2"<<endl;
//showbase<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ֵ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>ǰ׺
//showbase显示数值的基数前缀
cout<<dec<<showbase<<showpoint<<setw(30)<<d<<"----L3"<<"\n";
//showpoint<EFBFBD><EFBFBD>ʾС<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//showpoint显示小数点
cout<<setw(30)<<showpoint<<setprecision(10)<<d<<"----L4"<<"\n";
//setbase(8)<EFBFBD><EFBFBD><EFBFBD>ð˽<EFBFBD><EFBFBD><EFBFBD>
//setbase(8)设置八进制
cout<<setw(30)<<setbase(16)<<100<<"----L5"<<"\n";
system("pause");
}

View File

@@ -6,16 +6,16 @@ int main(int argc, char const *argv[])
{
fstream ioFile;
ioFile.open("./a.dat",ios::out);
ioFile<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<" "<<76<<" "<<98<<" "<<67<<endl; //L3
ioFile<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<" "<<89<<" "<<70<<" "<<60<<endl;
ioFile<<"<EFBFBD><EFBFBD>ʮ"<<" "<<91<<" "<<88<<" "<<77<<endl;
ioFile<<"<EFBFBD>ƶ<EFBFBD>"<<" "<<62<<" "<<81<<" "<<75<<endl;
ioFile<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<" "<<90<<" "<<78<<" "<<67<<endl;
ioFile<<"张三"<<" "<<76<<" "<<98<<" "<<67<<endl; //L3
ioFile<<"李四"<<" "<<89<<" "<<70<<" "<<60<<endl;
ioFile<<"王十"<<" "<<91<<" "<<88<<" "<<77<<endl;
ioFile<<"黄二"<<" "<<62<<" "<<81<<" "<<75<<endl;
ioFile<<"刘六"<<" "<<90<<" "<<78<<" "<<67<<endl;
ioFile.close();
ioFile.open("./a.dat",ios::in|ios::binary);
char name[10];
int chinese,math,computer;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t"<<"Ӣ<EFBFBD><EFBFBD>\t"<<"<EFBFBD><EFBFBD>ѧ\t"<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t"<<"<EFBFBD>ܷ<EFBFBD>"<<endl;
cout<<"姓名\t"<<"英语\t"<<"数学\t"<<"计算机\t"<<"总分"<<endl;
ioFile>>name;
while(!ioFile.eof()) {
ioFile>>chinese>>math>>computer;

View File

@@ -1,4 +1,4 @@
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>12-2<><32> <20>ú<EFBFBD><C3BA><EFBFBD>get<EFBFBD><EFBFBD>getline<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
//【例12-2】 用函数getgetline读取数据。
#include <iostream>
using namespace std;
int main()
@@ -14,8 +14,8 @@ int main()
}
/*
<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>a = cin.get() ?<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ?cin.get(a)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD>
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASCALL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽a<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cin<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>cin.get()<29>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[enter]<EFBFBD><EFBFBD>[space]<EFBFBD><EFBFBD>[tab]<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
用法:a = cin.get() ?或者 ?cin.get(a)
结束条件:输入字符足够后回车
说明这个是单字符的输入用途是输入一个字符把它的ASCALL码存入到a中
处理方法与cin不同cin.get()在缓冲区遇到[enter][space][tab]不会作为舍弃,而是继续留在缓冲区中
*/

View File

@@ -1,9 +1,9 @@
#include<iostream>
using namespace std;
/*
<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>cin.getline(arrayname,size)<EFBFBD><EFBFBD>cin.get(arrayname,size)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cin.get(arrayname,size)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[enter]ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>[enter]
cin.getline(arrayname,size)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[enter]ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>[enter]
1cin.getline(arrayname,size)cin.get(arrayname,size)的区别
cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter]
cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,但是会删除缓冲区中的[enter]
*/
int main()
{
@@ -12,27 +12,27 @@ int main()
char b;
cin.get(a,10);
cin.get(b);
cout<<a<<endl<<int(b);//<EFBFBD><EFBFBD><EFBFBD>12345[enter] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>12345 <20><><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD> 10*/
cout<<a<<endl<<int(b);//输入:12345[enter] 输出12345 【换行】 10*/
/*char c[10];
char d;
cin.getline(c,10);
cin.get(d);
cout<<c<<endl<<int(d);//<EFBFBD><EFBFBD><EFBFBD>12345[enter]a[enter] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>12345<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>97*/
//cin.getline(arrayname,size,s)<EFBFBD><EFBFBD>cin.gei(arrayname,size,s)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cout<<c<<endl<<int(d);//输入:12345[enter]a[enter] 输出12345【换行】97*/
//cin.getline(arrayname,size,s)cin.gei(arrayname,size,s)的区别
/*
cin.getline(arrayname,size,s)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>
cin.get<EFBFBD><EFBFBD>arrayname,size,s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>s
cin.getline(arrayname,size,s)当遇到s时会结束输入并把s从缓冲区中删除
cin.getarrayname,size,s当遇到s时会结束输入但不会删除缓冲区中的s
*/
/*
char e[10];
char f;
cin.get(e,10,',');
cin.get(f);
cout<<e<<endl<<f;//<EFBFBD><EFBFBD><EFBFBD>12345,[enter] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>12345<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>cin,get<65><74><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>*/
cout<<e<<endl<<f;//输入:12345,[enter] 输出12345【换行】说明cin,get不会删除缓冲区的*/
char e1[10];
char f1;
cin.getline(e1,10,',');
cin.get(f1);
cout<<e1<<endl<<f1;//<EFBFBD><EFBFBD><EFBFBD>asd,wqe <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>asd<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>w
cout<<e1<<endl<<f1;//输入:asd,wqe 输出asd【换行】w
system("pause");
}

View File

@@ -1,6 +1,6 @@
#include<iostream>
#include<fstream>
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ķ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//向量是一个能够存放任意类型的动态数组
#include<vector>
#include<cstring>
using namespace std;
@@ -25,20 +25,20 @@ class Person{
int main(int argc, char const *argv[])
{
vector<Person> v;
vector<Person>::iterator pos;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vector<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>vector<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
vector<Person>::iterator pos;//声明一个迭代器来访问vector容器作用遍历或者指向vector容器的元素
char ch;
ofstream out("d:/person.dat",ios::out|ios::app|ios::binary);
char Name[20],ID[18],Addr[20];
int Age;
cout<<"------<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>------"<<endl<<endl;
cout<<"------输入个人档案------"<<endl<<endl;
do{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ";
cout<<"姓名: ";
cin>>Name;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>ţ<EFBFBD> ";
cout<<"身份证号: ";
cin>>ID;
cout<<"<EFBFBD><EFBFBD><EFBFBD> ";
cout<<"年龄: ";
cin>>Age;
cout<<"<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD> ";
cout<<"地址: ";
cin>>Addr;
Person per(Name,ID,Age,Addr);
out.write((char*)&per,sizeof(per));
@@ -53,7 +53,7 @@ int main(int argc, char const *argv[])
v.push_back(s);
in.read((char*)&s,sizeof(s));
}
cout<<"\n---------<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------"<<endl<<endl;//L15
cout<<"\n---------从文件中读出的数据--------"<<endl<<endl;//L15
pos=v.begin();
for(pos=v.begin();pos!=v.end();pos++)
(*pos).display();

View File

@@ -6,7 +6,7 @@ int main(int argc, char const *argv[])
{
int flag;
unsigned seed;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
cout<<"请输入无符号整数:"<<endl;
cin>>seed;
srand(seed);
int sum = rolldice();

View File

@@ -14,7 +14,7 @@ int main(int argc, char const *argv[])
{
cout<<i<<endl;
cout<<wek+s<<endl;
cout<<"-------<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-------"<<endl;
cout<<"-------哈哈-------"<<endl;
}
system("pause");
return 0;

View File

@@ -4,7 +4,7 @@ void move(char A, char B);
void hanoi(int n,char A, char B, char C);
int main(int argc, char const *argv[])
{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入盘子数量:";
int disks;
cin>>disks;
hanoi(disks,'A','B','C');

View File

@@ -3,7 +3,7 @@ using namespace std;
int f(int n, int k);
int main(int argc, char const *argv[])
{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>k"<<endl;
cout<<"请输入n与k"<<endl;
int n,k;
cin>>n;
cin>>k;

View File

@@ -1,10 +1,10 @@
#include<iostream>
using namespace std;
int i=1; // i Ϊȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD>
int i=1; // i 为全局变量,具有静态生存期。
int main(void)
{
static int a; // <EFBFBD><EFBFBD>̬<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>
int b=-10; // b, cΪ<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD>
static int a; // 静态局部变量,有全局寿命,局部可见。
int b=-10; // b, c为局部变量,具有动态生存期。
int c=0;
void other(void);
cout<<"---MAIN---\n";
@@ -21,10 +21,10 @@ void other(void)
{
static int a=2;
static int b;
// a,bΪ<EFBFBD><EFBFBD>̬<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>
//ֻ<EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int c=10; // CΪ<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ÿ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b为静态局部变量,具有全局寿命,局部可见。
//只第一次进入函数时被初始化。
int c=10; // C为局部变量,具有动态生存期
//每次进入函数时都初始化。
a=a+2; i=i+32; c=c+5;
cout<<"---OTHER---\n";
cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl;

View File

@@ -1,6 +1,6 @@
#include<iostream>
using namespace std;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//函数声明
inline double CalArea(double radius);
int main(int argc, char const *argv[])
{
@@ -11,7 +11,7 @@ int main(int argc, char const *argv[])
system("pause");
return 0;
}
//<EFBFBD>ӹؼ<EFBFBD><EFBFBD><EFBFBD>inline
//加关键字inline
inline double CalArea(double radius)
{
return 3.14*radius*radius;

View File

@@ -1,9 +1,9 @@
/*
һԲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>һԲ<EFBFBD>͹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>Ϊ35Ԫ/<2F>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ20Ԫ/ƽ<><C6BD><EFBFBD>ס<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ3<EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD>ذ뾶<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롣Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD>
一圆型游泳池如图所示现在需在其周围建一圆型过道并在其四周围上栅栏。栅栏价格为35元/米过道造价为20元/平方米。
过道宽度为3米游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԲǶ<EFBFBD><EFBFBD>СԲ<EFBFBD><EFBFBD>
СԲ<EFBFBD>ڴ<EFBFBD>Բ<EFBFBD>м䣬СԲΪ<EFBFBD><EFBFBD>Ӿ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>СԲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
图形描述:大圆嵌套小圆:
小圆在大圆中间,小圆为游泳池,大圆与小圆间隔为过道。
*/
#include<iostream>
using namespace std;
@@ -25,13 +25,13 @@ Circle::Circle(float r)
radius=r;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD>
// 计算圆的周长
float Circle::Circumference() const
{
return 2 * PI * radius;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 计算圆的面积
float Circle::Area() const
{
return PI * radius * radius;
@@ -42,20 +42,20 @@ int main(int argc, char const *argv[])
float radius;
float FenceCost, ConcreteCost;
// <EFBFBD><EFBFBD>ʾ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 提示用户输入半径
cout<<"Enter the radius of the pool: ";
cin>>radius;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Circle <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 声明 Circle 对象
Circle Pool(radius);
Circle PoolRim(radius + 3);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 计算栅栏造价并输出
FenceCost = PoolRim.Circumference() * FencePrice;
cout << "Fencing Cost is <EFBFBD><EFBFBD>" << FenceCost << endl;
cout << "Fencing Cost is " << FenceCost << endl;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 计算过道造价并输出
ConcreteCost = (PoolRim.Area() - Pool.Area())*ConcretePrice;
cout << "Concrete Cost is <EFBFBD><EFBFBD>" << ConcreteCost << endl;
cout << "Concrete Cost is " << ConcreteCost << endl;
system("pause");
return 0;
}

View File

@@ -1,31 +1,31 @@
/*
ʹ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵġ<EFBFBD><EFBFBD><EFBFBD>Ҫע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>
使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是,
尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,
也不能在内联成员函数中使用该类的对象。请看下面的程序段:
*/
//<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
//第一种
#include<iostream>
class Fred; //ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class Fred; //前向引用声明
class Barney {
Fred x; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Fred<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Fred x; //错误类Fred的声明尚不完善
};
class Fred {
Barney y;
};
//<EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>
class Fred; //ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//第二种
class Fred; //前向引用声明
class Barney {
public:
void method()
{
x->yabbaDabbaDo(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Fred<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
x->yabbaDabbaDo(); //错误Fred类的对象在定义之前被使用
}
private:
Fred* x; //<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Fred<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
Fred* x; //正确经过前向引用声明可以声明Fred类的对象指针
};
class Fred {
@@ -36,5 +36,5 @@ class Fred {
};
/*
<EFBFBD>ܽ᣺<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ϸ<EFBFBD>ڡ<EFBFBD>
总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。
*/

View File

@@ -1,8 +1,8 @@
/*
֪ʶ<EFBFBD>
<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD>̬<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
知识点:
静态成员函数
类外代码可以使用类名和作用域操作符来调用静态成员函数。
静态成员函数只能引用属于该类的静态数据成员或静态成员函数。
*/
#include<iostream>
using namespace std;

View File

@@ -10,9 +10,9 @@ class A
void A::f(A a)
{
//<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// cout<<x; //<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cout<<a.x; //<EFBFBD><EFBFBD>ȷ
//静态成员函数只能引用属于该类的静态数据成员或静态成员函数。
// cout<<x; //对x的引用是错误的
cout<<a.x; //正确
}
int main(int argc, char const *argv[])

View File

@@ -1,9 +1,9 @@
/*
ѧϰ֪ʶ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա
<EFBFBD>ùؼ<EFBFBD><EFBFBD><EFBFBD>static<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>Ա<EFBFBD><EFBFBD>ͬһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(::)<29><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
学习知识:
静态数据成员
用关键字static声明
该类的所有对象维护该成员的同一个拷贝
必须在类外定义和初始化,用(::)来指明所属的类。
*/
#include <iostream>
using namespace std;
@@ -17,7 +17,7 @@ public:
void GetC() {cout<<" Object id="<<countP<<endl;}
private:
int X,Y;
//<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//静态数据成员,必须在外部定义和初始化,内部不能直接初始化!
static int countP;
};
Point::Point(Point &p)
@@ -25,7 +25,7 @@ Point::Point(Point &p)
Y=p.Y;
countP++;
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(::)<29><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//必须在类外定义和初始化,用(::)来指明所属的类。
int Point::countP=0;
int main()
{ Point A(4,5);

View File

@@ -13,12 +13,12 @@ class A
int main()
{ double d(9.5);
display(d);
A const a(3,4); //a<EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬲<EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
A const a(3,4); //a是常对象,不能被更新
system("pause");
return 0;
}
void display(const double& r)
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>βΣ<EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD>ܸ<EFBFBD><EFBFBD><EFBFBD> r<><72><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5><C4B6><EFBFBD><EFBFBD><EFBFBD>
//常引用做形参,在函数中不能更新 r所引用的对象。
{ cout<<r<<endl; }

View File

@@ -3,37 +3,37 @@ using namespace std;
class R
{ public:
R(int r1, int r2){R1=r1;R2=r2;}
//const<EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD>
//const区分成员重载函数
void print();
void print() const;
private:
int R1,R2;
};
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>const;
<EFBFBD><EFBFBD><EFBFBD>const<EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>ҲҪ<EFBFBD><EFBFBD>const<EFBFBD>ؼ<EFBFBD><EFBFBD>֡<EFBFBD>
const<EFBFBD>ؼ<EFBFBD><EFBFBD>ֿ<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
常成员函数说明格式:类型说明符 函数名(参数表)const;
这里,const是函数类型的一个组成部分因此在实现部分也要带const关键字。
const关键字可以被用于参与对重载函数的区分
通过常对象只能调用它的常成员函数
*/
void R::print()
{
cout<<"<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
cout<<"普通调用"<<endl;
cout<<R1<<":"<<R2<<endl;
}
//ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//实例化也需要带上
void R::print() const
{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
cout<<"常对象调用"<<endl;
cout<<R1<<";"<<R2<<endl;
}
int main()
{
R a(5,4);
a.print(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>void print()
//ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
a.print(); //调用void print()
//通过常对象只能调用它的常成员函数
const R b(20,52);
b.print(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>void print() const
b.print(); //调用void print() const
system("pause");
return 0;
}

View File

@@ -1,4 +1,4 @@
//ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//使用友元函数计算两点间距离
#include <iostream>
#include <cmath>
using namespace std;
@@ -13,9 +13,9 @@ class Point{
}
friend float Distance(Point &a,Point &b);
private:
int X,Y;//˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա
int X,Y;//私有数据成员
};
//ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
//通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。
float Distance(Point &a, Point &b){
double dx = a.X-b.X;
double dy = a.Y-b.Y;
@@ -25,7 +25,7 @@ float Distance(Point &a, Point &b){
int main()
{
Point p1(3.0,5.0),p2(4.0,6.0);
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>"<<Distance(p1,p2)<<endl;
cout<<"两点距离为:"<<Distance(p1,p2)<<endl;
system("pause");
return 0;
}

View File

@@ -1,13 +1,13 @@
#include<iostream>
using namespace std;
/*
<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD>ʶԷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>г<EFBFBD>Ա<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>friend<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。
声明语法将友元类名在另一个类中使用friend修饰说明。
*/
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>кͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
如果声明B类是A类的友元B类的成员函数就可以访问A类的私有和保护数据
但A类的成员函数却不能访问B类的私有、保护数据。
*/
class A{
friend class B;
@@ -45,5 +45,5 @@ int main(int argc, char const *argv[])
}
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>кͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
如果声明B类是A类的友元B类的成员函数就可以访问A类的私有和保护数据但A类的成员函数却不能访问B类的私有、保护数据
*/

View File

@@ -15,7 +15,7 @@ Clock::Clock(Clock &c)
}
void Clock::SetTime(int NewH,int NewM,int NewS)
{
//<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>thisָ<EFBFBD>һ<EFBFBD><EFBFBD>
//加不加this指针都一样
this->Hour=NewH;
this->Minute=NewM;
this->Second=NewS;
@@ -26,7 +26,7 @@ void Clock::ShowTime()
cout<<this->Minute<<endl;
cout<<this->Second<<endl;
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//析构函数
Clock::~Clock()
{
@@ -37,7 +37,7 @@ int main(int argc, char const *argv[])
c.SetTime(10,20,30);
c.ShowTime();
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//拷贝构造函数调用
Clock c1(c);
c1.ShowTime();
c1.SetTime(90,98,99);

View File

@@ -24,19 +24,19 @@ int main(){
B b1,*pB;
a1.setA(1);
b1.setA(2);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//把派生类对象赋值给基类对象。
a1=b1;
cout<<a1.getA()<<endl;
cout<<b1.getA()<<endl;
a1.setA(10);
cout<<a1.getA()<<endl;
cout<<b1.getA()<<endl;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>
//把派生类对象的地址赋值给基类指针。
pA=&b1;
pA->setA(20);
cout<<pA->getA()<<endl;
cout<<b1.getA()<<endl;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
//用派生类对象初始化基类对象的引用。
A &ra=b1;
ra.setA(30);
cout<<pA->getA()<<endl;

View File

@@ -2,8 +2,8 @@
using namespace std;
/*
<EFBFBD>ȹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
<EFBFBD>ٹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
先构造成员
再构造自身(调用构造函数)
*/
class A {
@@ -33,7 +33,7 @@ int main()
}
/*
ִ<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
执行结果:
Constructing B
Constructing A
Constructing C

View File

@@ -14,7 +14,7 @@ class Derived:public Base{
private:
int y;
public:
Derived(int a,int b):Base(a){ //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
Derived(int a,int b):Base(a){ //派生类构造函数的初始化列表
y=b;
cout<<"Derived constructor y="<<y<<endl;
}

View File

@@ -32,7 +32,7 @@ int main()
}
/*
ִ<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
执行结果:
Constructing C
Constructing B
Constructing A

View File

@@ -13,7 +13,7 @@ class Line:public Point{
protected:
int len;
public:
Line(int a,int b,int l):Point(a,b) { //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
Line(int a,int b,int l):Point(a,b) { //构造函数初始化列表
len=l;
cout<<"Constructing Line,len ..."<<len<<endl;
}

View File

@@ -1,8 +1,8 @@
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>protected<EFBFBD>ij<EFBFBD>Ա
<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
基类中protected的成员
类内部:可以访问
类的使用者:不能访问
类的派生类成员:可以访问
*/
#include<iostream>
class B
@@ -19,16 +19,16 @@ class D: public B
public:
void f()
{
i=1;//cannot access <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>г<EFBFBD>Ա
j=2;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
i=1;//cannot access 派生类不可访问基类私有成员
j=2;//派生类可以访问基类保护成员
k=3;
}
};
int main()
{
B b;
b.i=1;//cannot access ˽<EFBFBD>г<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>߲<EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
b.j=2; //cannot access <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>߲<EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
b.i=1;//cannot access 私有成员,类的使用者不能访问
b.j=2; //cannot access 保护成员,类的使用者不能访问
b.k=3;
system("pause");
return 0;

View File

@@ -1,7 +1,7 @@
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽΪprotected<EFBFBD>ļ̳г<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ̳з<EFBFBD>ʽ<EFBFBD>£<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>public<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>protected<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>protected<EFBFBD><EFBFBD>private<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
派生方式为protected的继承称为保护继承,在这种继承方式下,
基类的public成员在派生类中会变成protected成员,
基类的protectedprivate成员在派生类中保持原来的访问权限
*/
#include <iostream>
using namespace std;
@@ -17,21 +17,21 @@ class Derived:protected Base{
int y;
public:
void sety(int n){ y=n; }
void sety(){ y=getx();} //<EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
void sety(){ y=getx();} //访问基类的保护成员
void showy(){ cout<<y<<endl; }
};
int main(){
Derived obj;
obj.setx(10); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
obj.setx(10); //错误
obj.sety(20);
obj.showx(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
obj.showx(); //错误,
obj.showy();
system("pause");
}
/*
<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳лὫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>public<EFBFBD><EFBFBD>Ϊprotected<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>protected<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>
<EFBFBD>ⲿȥʹ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ʱ<EFBFBD>򣬻ᱨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>setx<EFBFBD><EFBFBD>showx<EFBFBD><EFBFBD><EFBFBD>ʴ<EFBFBD><EFBFBD>󣬶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>y=getx()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>
解释:
如最上面文字所示:保护继承会将基类的public变为protected,而对于protected成员,
外部去使用保护成员的时候,会报错,所以setxshowx访问错误,而对于派生类,则可直接访问基类的保护成员,
在派生类中y=getx()可正常访问!
*/

View File

@@ -7,7 +7,7 @@ public:
int getx(){ return x; }
void showx() { cout<<x<<endl; }
};
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//派生类
class derived:public base{
int y;
public:
@@ -16,7 +16,7 @@ public:
void showy()
{ cout<<y<<endl; }
};
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>private<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//派生类不可直接访问基类的private成员可通过基类的共有成员函数访问
int main()
{ derived obj;
obj.setx(10);

View File

@@ -22,8 +22,8 @@ public:
};
class ABC:public C, public B {
public:
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
ABC(int i,int j,int k):C(i),B(j),A(i) //L1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><EFBFBD>
//虚基类由最终派生类初始化
ABC(int i,int j,int k):C(i),B(j),A(i) //L1这里必须对A进行初始化
{ cout<<"Constructing ABC..."<<endl; }
};
int main(){

View File

@@ -1,4 +1,4 @@
//<EFBFBD><EFBFBD>Ҫ!!!
//重要!!!
#include <iostream>
using namespace std;
class A {

View File

@@ -1,4 +1,4 @@
//<EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>
//当同时存在直接基类和间接基类时,每个派生类只负责其直接基类的构造。
#include <iostream>
using namespace std;
class A {

View File

@@ -13,21 +13,21 @@ class Figure{
class Trianle:public Figure{
public:
void area(){
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<x*y*0.5<<endl;
cout<<"三角形面积:"<<x*y*0.5<<endl;
}
};
class Rectangle:public Figure{
public:
void area(){
cout<<"<EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>"<<x*y<<endl;
cout<<"这是矩形,它的面积是:"<<x*y<<endl;
}
};
int main(int argc, char const *argv[])
{
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
//定义抽象类指针
Figure *pF=NULL;
// Figure f1; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Figure f1; 抽象类不能被实例化
Rectangle r;
Trianle t;
t.set(10,20);
@@ -36,7 +36,7 @@ int main(int argc, char const *argv[])
r.set(10,20);
pF=&r;
pF->area();
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//定义抽象类引用
Figure &rF=t;
rF.set(20,20);
rF.area();

View File

@@ -1,7 +1,7 @@
//Eg7-1.cpp
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C><EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Employee<EFBFBD><EFBFBD>printΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>ʵ<EFBFBD>Manager<EFBFBD><EFBFBD>print<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܷ<EFBFBD><EFBFBD>ʵ<EFBFBD>Employee<EFBFBD><EFBFBD>print
//基类指针或引用指向派生类对象时,虚函数与非虚函数区别:
//声明Employeeprint为虚函数,则可访问到Managerprint函数,非虚函数,则只能访问到Employeeprint
#include<iostream>
#include<string>
using namespace std;
@@ -30,7 +30,7 @@ float Employee::getSalary(){
return 0.0;
}
void Employee::print(){
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<Name<<"\t"<<"<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>"<<Id<<endl;
cout<<"姓名:"<<Name<<"\t"<<"编号:"<<Id<<endl;
}
class Manager:public Employee{
@@ -38,23 +38,23 @@ class Manager:public Employee{
Manager(string name,string id,float s=0.0):Employee(name,id){
weeklySalary=s;
}
void setSalary(float s) { weeklySalary=s; } //<EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н
float getSalary(){ return weeklySalary; } //<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н
void print(){ //<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>н
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<getName()<<"\t\t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: "<<getId()<<"\t\t <EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD>: "<<getSalary()<<endl;
void setSalary(float s) { weeklySalary=s; } //设置经理的周薪
float getSalary(){ return weeklySalary; } //获取经理的周薪
void print(){ //打印经理姓名、身份证、周薪
cout<<"经理:"<<getName()<<"\t\t 编号: "<<getId()<<"\t\t 周工资: "<<getSalary()<<endl;
}
private:
float weeklySalary; //<EFBFBD><EFBFBD>н
float weeklySalary; //周薪
};
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ֵ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣨻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>м̳е<EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD>
不论哪种赋值方式,都只能通过基类对象(或基类对象的指针或引用)访问到派生类对象从基类中继承到的成员,
不能借此访问派生类定义的成员。而虚函数使得可以通过基类对象的指针或引用访问派生类定义的成员。
*/
int main(){
Employee e("С<EFBFBD><EFBFBD>","NO0001"),*pM;
Manager m("С<EFBFBD><EFBFBD>","NO0002",128);
Employee e("小米","NO0001"),*pM;
Manager m("小汪","NO0002",128);
m.print();
pM=&m;
pM->print();
@@ -63,4 +63,4 @@ int main(){
system("pause");
return 0;
}
//Virtual<EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>Ϊvirtual<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>
//Virtual关键字其实质是告知编译系统被指定为virtual的函数采用动态联编的形式编译。

View File

@@ -13,7 +13,7 @@ class C: public B {
public:
void f(int i){cout<<"C::f()"<<endl;}
};
//һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ̳<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>о<EFBFBD><EFBFBD><EFBFBD>ԶΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//一旦将某个成员函数声明为虚函数后,它在继承体系中就永远为虚函数了
class D: public C{
public:
void f (int){cout<<"D::f()"<<endl;}
@@ -21,10 +21,10 @@ public:
int main(){
A *pA,a;
B *pB, b; C c; D d;
pA=&a; pA->f(1); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A::f
pB=&b; pB->f(1); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B::f
pB=&c; pB->f(1); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>C::f
pB=&d; pB->f(1); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>D::f
pA=&a; pA->f(1); //调用A::f
pB=&b; pB->f(1); //调用B::f
pB=&c; pB->f(1); //调用C::f
pB=&d; pB->f(1); //调用D::f
system("pause");
return 0;
}

View File

@@ -1,4 +1,4 @@
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ch.cppi
//例题ch.cppi
#include <iostream>
using namespace std;
class X{
@@ -9,8 +9,8 @@ public:
int main ()
{
X obj1, obj2, obj3;
obj1 = obj2; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>=<3D><>
obj1.operator= (obj2); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>=<3D><>
obj1 = obj2 = obj3; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>=<3D><>
obj1 = obj2; //调用重载“=”
obj1.operator= (obj2); //调用重载“=”
obj1 = obj2 = obj3; //调用重载“=”
system("pause");
}

View File

@@ -2,27 +2,27 @@
#include <iostream>
#include <cstring>
using namespace std;
struct Person{ //ְ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ľṹ
struct Person{ //职工基本信息的结构
double salary;
char *name;
};
class SalaryManaege{
Person *employ; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int max; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD>Ͻ<EFBFBD>
int n; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʵ<EFBFBD><EFBFBD>ְ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Person *employ; //存放职工信息的数组
int max; //数组下标上界
int n; //数组中的实际职工人数
public:
SalaryManaege(int Max=0){
max=Max;
n=0;
employ=new Person[max];
}
double &operator[](char *Name) { //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double &operator[](char *Name) { //重载[],返回引用
Person *p;
for(p=employ;p<employ+n;p++)
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
//如果存在处理
if(strcmp(p->name,Name)==0)
return p->salary;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//不存在情况处理
p=employ + n++;
p->name=new char[strlen(Name)+1];
strcpy(p->name,Name);
@@ -37,13 +37,13 @@ public:
};
int main(){
SalaryManaege s(3);
s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]=2188.88;
s["<EFBFBD><EFBFBD>˹"]=1230.07;
s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]=3200.97;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t"<<s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]<<endl; cout<<"<EFBFBD><EFBFBD>˹\t"<<s["<EFBFBD><EFBFBD>˹"]<<endl;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t"<<s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]<<endl;
s["张三"]=2188.88;
s["里斯"]=1230.07;
s["王无"]=3200.97;
cout<<"张三\t"<<s["张三"]<<endl; cout<<"里斯\t"<<s["里斯"]<<endl;
cout<<"王无\t"<<s["王无"]<<endl;
cout<<"-------<EFBFBD><EFBFBD>Ϊdisplay<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------\n\n";
cout<<"-------下为display的输出--------\n\n";
s.display();
system("pause");
}

View File

@@ -1,4 +1,4 @@
//<EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Complex<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//有复数类Complex利用运算符重载实现复数的加、减、乘、除等复数运算。
#include<iostream>
using namespace std;
class Complex {
@@ -21,7 +21,7 @@ Complex Complex::operator -(Complex b)
{
return Complex(r-b.r,i-b.i);
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
//求复数相乘的算法
Complex Complex::operator *(Complex b)
{
Complex t;
@@ -29,7 +29,7 @@ Complex Complex::operator *(Complex b)
t.i=r*b.i+i*b.r;
return t;
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//求复数相除的算法
Complex Complex::operator /(Complex b) {
Complex t;
double x;
@@ -48,8 +48,8 @@ void Complex::display(){
int main(void) {
Complex c1(1,2),c2(3,4),c3,c4,c5,c6;
Complex a,b(2,3);
a=b+2; //<EFBFBD><EFBFBD>ȷ
// a=2+b; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
a=b+2; //正确
// a=2+b; //错误
a.display();
c3=c1+c2;
c4=c1-c2;

View File

@@ -5,7 +5,7 @@ using namespace std;
int main(int argc, char const *argv[])
{
string name[]={"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"};
string name[]={"张三","李四","王麻子"};
double salary[]={1200,2000,1450};
map<string,double>sal;
map<string,double>::iterator p;
@@ -18,7 +18,7 @@ int main(int argc, char const *argv[])
cout<<p->first<<"\t"<<p->second<<endl;
}
string person;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:";
cout<<"输入查找人员的姓名:";
cin>>person;
int flag=1;
for(p=sal.begin();p!=sal.end();p++)
@@ -27,18 +27,18 @@ int main(int argc, char const *argv[])
flag=0;
}
if(flag)
cout<<"û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
cout<<"没查找到对应的结果!"<<endl;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:";
cout<<"输入待删除的人员的姓名:";
cin>>person;
map<string,double>::iterator it;
it = sal.find(person);
if(it!=sal.end()){
cout<<"<EFBFBD><EFBFBD><EFBFBD>ҳɹ<EFBFBD><EFBFBD><EFBFBD>"<<(*it).first<<":"<<(*it).second<<endl;
cout<<"查找成功:"<<(*it).first<<":"<<(*it).second<<endl;
sal.erase(it);
cout<<"ɾ<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>"<<endl;
cout<<"删除成功"<<endl;
}
cout<<"ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>Ϊ"<<endl;
cout<<"删除后的结果为"<<endl;
for(p=sal.begin();p!=sal.end();p++){
cout<<p->first<<p->second<<endl;
}

View File

@@ -6,21 +6,21 @@ template <class T>
T Max(T a,T b) {
return (a>b)?a:b;
}
//<EFBFBD>ػ<EFBFBD>
//template <> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><<3C>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) {}
//特化
//template <> 返回类型 函数名<特化的数据类型>(参数表) {}
template<>char * Max<char *>(char *a,char *b) {
return (strcmp(a,b)>=0)?a:b;
}
int main(){
float c=5.1,d=3.2;
cout<<"2,3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǣ<EFBFBD>"<<Max(3,2)<<endl;
cout<<"c,d<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǣ<EFBFBD>"<<Max(c,d)<<endl;
cout<<"2,3的最大值是:"<<Max(3,2)<<endl;
cout<<"c,d的最大值是:"<<Max(c,d)<<endl;
cout<<Max("xbv","xyce")<<endl;
system("pause");
}
/*
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5>ã<EFBFBD>
<EFBFBD><EFBFBD> <20><>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C++<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ʵ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
① 当程序中同时存在模板和它的特化时,特化将被优先调用;
② 在同一个程序中除了函数模板和它的特化外还可以有同名的普通函数。其区别在于C++会对普通函数的调用实参进行隐式的类型转换,
但不会对模板函数及特化函数的参数进行任何形式的类型转换。
*/

View File

@@ -6,16 +6,16 @@ T Max(T a,T b) {
return (a>b)?a:b;
}
/*
C++<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ֻ<EFBFBD>Ǽ򵥵ؽ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD>κ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
C++在实例化函数模板的过程中,只是简单地将模板参数替换成调用实参的类型,并以此生成模板函数,不会进行参数类型的任何转换。
*/
int main(){
double a=2,b=3.4;
float c=5.1,d=3.2;
//<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ǿ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
cout<<"2, 3.2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǣ<EFBFBD>"<<Max(double(2),3.2)<<endl;
cout<<"a, c <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǣ<EFBFBD>"<<Max(float(a),c)<<endl;
//<EFBFBD><EFBFBD>ʾָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cout<<"'a', 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǣ<EFBFBD>"<<Max<int>('a',3)<<endl;
//在模板调用时进行参数类型的强制转换
cout<<"2, 3.2 的最大值是:"<<Max(double(2),3.2)<<endl;
cout<<"a, c 的最大值是:"<<Max(float(a),c)<<endl;
//显示指定函数模板实例化的参数类型
cout<<"'a', 3 的最大值是:"<<Max<int>('a',3)<<endl;
system("pause");
}

View File

@@ -1,18 +1,18 @@
//Eg9-1.cpp
#include <iostream>
//ע<EFBFBD><EFBFBD>һ<EFBFBD>max<EFBFBD><EFBFBD>minʹ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ı<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>std::cout<EFBFBD><EFBFBD>std::endl
//注意一点,maxmin使用的时候,容易引起冲突,如果写了下面这一行代码,则要改变函数模板名字,否则直接使用std::coutstd::endl
using namespace std;
/*
<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>class<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD>class<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD>ͬ<EFBFBD>ġ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>class<EFBFBD><EFBFBD>ʾT<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>int<EFBFBD><EFBFBD>float<EFBFBD><EFBFBD>char<EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>struct<EFBFBD><EFBFBD>enum<EFBFBD><EFBFBD>class<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>
不要把这里的class与类的声明关键字class混淆在一起虽然它们由相同的字母组成但含义是不同的。
这里的class表示T是一个类型参数可以是任何数据类型intfloatchar等,或者用户定义的structenumclass等自定义数据类型。
*/
template <class T>
T Min(T a,T b) {
return (a<b)?a:b;
}
/*
Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹ؼ<EFBFBD><EFBFBD><EFBFBD>class<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼C++<2B><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD>typename<6D><65>Ϊģ<CEAA><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹ؼ<CDB9><D8BC>֣<EFBFBD>ͬʱҲ֧<D2B2><D6A7>ʹ<EFBFBD><CAB9>class<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>min<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>template <class T>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ȼ۵ģ<EFBFBD>
为了区别类与模板参数中的类型关键字class标准C++提出?了用typename作为模板参数的类型关键字同时也支持使用class
比如把min定义的template <class T>写成下面的形式是完全等价的:
*/
template <typename T>
T myMin(T a, T b){
@@ -20,22 +20,22 @@ T myMin(T a, T b){
}
/*
ģ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жԺ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ȷ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֻ<EFBFBD>ڵ<EFBFBD>1<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ڵ<EFBFBD>1<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>͵IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>1<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
模板实例化发生在调用模板函数时。当编译器遇到程序中对函数模板的调用时,
它才会根据调用语句中实参的具体类型,确定模板参数的数据类型,
并用此类型替换函数模板中的模板参数,生成能够处理该类型的函数代码,即模板函数。
当多次发生类型相同的参数调用时只在第1次进行实例化。编译器只在第1次调用时生成模板函数
当之后遇到相同类型的参数调用时不再生成其他模板函数它将调用第1次实例化生成的模板函数。
*/
int main(){
double a=2,b=3.4;
float c=2.3,d=3.2;
cout<<"2<EFBFBD><EFBFBD>3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD>ǣ<EFBFBD>"<<Min<int>(2,3)<<endl; //<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cout<<"2<EFBFBD><EFBFBD>3.4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD>ǣ<EFBFBD>"<<Min(a,b)<<endl;//<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cout<<"'a'<EFBFBD><EFBFBD>'b' <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD>ǣ<EFBFBD>"<<Min('a','b')<<endl;
cout<<"2.3<EFBFBD><EFBFBD>3.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD>ǣ<EFBFBD>"<<Min(c,d)<<endl;
cout<<"2.3<EFBFBD><EFBFBD>3.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǣ<EFBFBD>"<<std::min(c,d)<<endl;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cout<<"2.3<EFBFBD><EFBFBD>3.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD>ǣ<EFBFBD>"<<myMin(c,d)<<endl;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>classΪtypename
// cout<<"2<EFBFBD><EFBFBD>'a' <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD>ǣ<EFBFBD>"<<Min(2,'a')<<endl; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>9-3-1.cpp
cout<<"23 的最小值是:"<<Min<int>(2,3)<<endl; //显式调用
cout<<"23.4 的最小值是:"<<Min(a,b)<<endl;//隐式调用
cout<<"'a''b' 的最小值是:"<<Min('a','b')<<endl;
cout<<"2.33.2的最小值是:"<<Min(c,d)<<endl;
cout<<"2.33.2的最大值是:"<<std::min(c,d)<<endl;//引用命名空间内部的最小值函数
cout<<"2.33.2的最小值是:"<<myMin(c,d)<<endl;//更换classtypename
// cout<<"2'a' 的最小值是:"<<Min(2,'a')<<endl; //报错,不同类型无法处理,请看9-3-1.cpp
system("pause");
return 0;
}

View File

@@ -1,5 +1,5 @@
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>Stack<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>ʾջ<EFBFBD>д<EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>MAXSIZE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD>
设计一个堆栈的类模板Stack在模板中用类型参数T表示栈中存放的数据用非类型参数MAXSIZE代表栈的大小。
*/
#include<iostream>
using namespace std;
@@ -32,14 +32,14 @@ class Stack{
}
};
/*
ԭ<EFBFBD>ͣ<EFBFBD>
template <ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>::<3A><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>){};
原型:
template <模板参数列表>
返回值类型 类模板名<模板参数名表>::成员函数名 (参数列表){};
*/
template<class T, int MAXSIZE>
void Stack<T,MAXSIZE>::push(T e){
if(full()){
cout<<"ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>";
cout<<"栈已满,不能再添加元素了!";
return;
}
elem[++top]=e;
@@ -48,7 +48,7 @@ void Stack<T,MAXSIZE>::push(T e){
template<class T, int MAXSIZE>
T Stack<T,MAXSIZE>::pop(){
if(empty()){
cout<<"ջ<EFBFBD>ѿգ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>"<<endl;
cout<<"栈已空,不能再弹出元素了!"<<endl;
return 0;
}
return elem[top--];
@@ -57,7 +57,7 @@ T Stack<T,MAXSIZE>::pop(){
int main(int argc, char const *argv[])
{
//<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//类模板实例化
Stack<int,10> iStack;
Stack<char,10> cStack;
iStack.setEmpty();

View File

@@ -1,4 +1,4 @@
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дӴ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//设计一通用数组类,它能够直接存取数组元素,并能够对数组进行从大到小的排序。
#include<iostream>
#include<cstring>
@@ -20,7 +20,7 @@ class Array{
template<class T> T& Array<T>::operator[](int i){
if(i<0||i>Size-1){
cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Խ<EFBFBD>"<<endl;
cout<<"\n数组下标越界!"<<endl;
exit(1);
}
return a[i];
@@ -39,7 +39,7 @@ template<class T> void Array<T>::Sort(){
a[i]=t;
}
}
//template <> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><<3C>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>::<3A>ػ<EFBFBD><D8BB><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>){}
//template <> 返回类型 类模板名<特化的数据类型>::特化成员函数名(参数表){}
template<> void Array<char *>::Sort(){
int p;
for(int i=0;i<Size-1;i++){

View File

@@ -8,7 +8,7 @@ int main(){
throw 10;
cout<<"3--After throw ...."<<endl;
}
catch(double i) { //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10.1<EFBFBD><EFBFBD>ͬ
catch(double i) { //仅此与例10.1不同
cout<<"4--In catch block1 .. an int type is.."<<i<<endl;
}
cout<<"5--After Catch...";

View File

@@ -3,8 +3,8 @@ using namespace std;
void temperature(int t)
{
if(t==100) throw "<EFBFBD>е";
else if(t==0) throw "<EFBFBD><EFBFBD><EFBFBD>";
if(t==100) throw "沸点!";
else if(t==0) throw "冰点!";
else{cout<<"temperatore="<<t<<endl;}
}

View File

@@ -1,7 +1,7 @@
//Eg10-7.cpp
#include<iostream>
using namespace std;
//<EFBFBD>ڲ<EFBFBD><EFBFBD>ٴ<EFBFBD>throw<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>򣬺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>throw()
//内部再次throw异常的时候函数不要带throw()
void Errhandler(int n)
{
try{
@@ -10,7 +10,7 @@ void Errhandler(int n)
}
catch(int n){
cout<<"catch an int exception inside..."<<n<<endl;
throw n; //<EFBFBD>ٴ<EFBFBD><EFBFBD>׳<EFBFBD><EFBFBD><EFBFBD>catch<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
throw n; //再次抛出本catch捕获的异常
}
}
int main(){

View File

@@ -2,8 +2,8 @@
#include <iostream>
using namespace std;
const int MAX=3;
class Full{}; //L1 <EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD>ʱ<EFBFBD>׳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class Empty{}; //L2 <EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD>ʱ<EFBFBD>׳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class Full{}; //L1 堆栈满时抛出的异常类
class Empty{}; //L2 堆栈空时抛出的异常类
class Stack{
private:
int s[MAX];
@@ -26,7 +26,7 @@ int main(){
Stack s;
try{
s.push(10); s.push(20); s.push(30);
//s.push(40); //L5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>
//s.push(40); //L5 将产生栈满异常
cout<<"stack(0)= "<<s.pop()<<endl;
cout<<"stack(1)= "<<s.pop()<<endl;
cout<<"stack(2)= "<<s.pop()<<endl;

View File

@@ -19,7 +19,7 @@ class DiskNotFound:public FileSysException{
};
int main(){
try{
// ..... //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ..... //程序代码
throw FileSysException();
}
catch(DiskNotFound p){cout<<p.Where()<<endl;}
@@ -27,7 +27,7 @@ int main(){
catch(FileSysException p){cout<<p.Where()<<endl;}
catch(BasicException p){cout<<p.Where()<<endl;}
try{
// ..... //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ..... //程序代码
throw DiskNotFound();
}
catch(BasicException p){cout<<p.Where()<<endl;}

View File

@@ -12,64 +12,64 @@ int main(int argc, char const *argv[])
const char key[3][20]={"img","system","ip"};
const char value[3][20]={"d:/a.img","win7","193.68.6.3"};
//make_pair<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//make_pair插入
for(int i=0;i<2;i++){
mp.insert(make_pair(key[i],value[i]));
}
//pair<const char*,const char*><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//pair<const char*,const char*>插入
mp.insert(pair<const char*,const char*>(key[2],value[2]));
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
mp["addr"]="<EFBFBD>й<EFBFBD>";
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
//ѭ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
//数组插入方式
mp["addr"]="中国";
//迭代器取出元素
//循环取出元素
for(iter=mp.begin();iter!=mp.end();iter++){
cout<<iter->first<<"\t"<<iter->second<<endl;
}
char key1[20];
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴key<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>";
cout<<"请输入按key查找";
cin.getline(key1,20);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
//查找元素
for(iter=mp.begin();iter!=mp.end();iter++){
if(strcmp(iter->first,key1)==0){
cout<<iter->first<<"<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>"<<"<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ֵΪ<EFBFBD><EFBFBD>"<<iter->second<<endl;
cout<<iter->first<<"查找出来了!"<<"对应的值为:"<<iter->second<<endl;
}
}
//<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
//findֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cin<EFBFBD><EFBFBD>
//第一种删除方式
//find只能用于查找数组建立的形式!并且不支持输入用cin
iter=mp.find("addr");
if(iter!=mp.end()){
cout<<iter->first<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>key<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>"<<"<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>valueΪ<EFBFBD><EFBFBD>"<<iter->second<<endl;
cout<<"<EFBFBD><EFBFBD>ʼɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>"<<endl;
cout<<iter->first<<"按照key查找出来了"<<"对应的value为:"<<iter->second<<endl;
cout<<"开始删除元素!"<<endl;
mp.erase(iter);
// break;
}
//<EFBFBD>ڶ<EFBFBD><EFBFBD>ַ<EFBFBD>ʽɾ<EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>keyɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
//第二种方式删除
//按照key删除元素
char drop_key[20];
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>valueɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
//按照value删除元素
char drop_value[20];
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴keyɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入按key删除";
cin.getline(drop_key,20);
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴valueɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入按value删除";
cin.getline(drop_value,20);
for(iter=mp.begin();iter!=mp.end();iter++){
if(strcmp(iter->first,drop_key)==0){
cout<<iter->first<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>key<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>"<<"<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>valueΪ<EFBFBD><EFBFBD>"<<iter->second<<endl;
cout<<"<EFBFBD><EFBFBD>ʼɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>"<<endl;
cout<<iter->first<<"按照key查找出来了"<<"对应的value为:"<<iter->second<<endl;
cout<<"开始删除元素!"<<endl;
mp.erase(iter);
break;
}
if(strcmp(iter->second,drop_value)==0){
cout<<iter->second<<"value<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>"<<"<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>keyΪ<EFBFBD><EFBFBD>"<<iter->first<<endl;
cout<<"<EFBFBD><EFBFBD>ʼɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>"<<endl;
cout<<iter->second<<"value查找出来了!"<<"对应的key为"<<iter->first<<endl;
cout<<"开始删除元素!"<<endl;
mp.erase(iter);
break;
}
}
cout<<"------ɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>--------\n";
//ѭ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
cout<<"------删除元素以后--------\n";
//循环取出元素
for(iter=mp.begin();iter!=mp.end();iter++){
cout<<iter->first<<"\t"<<iter->second<<endl;
}

View File

@@ -1,10 +1,10 @@
#include<iostream>
using namespace std;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//函数异常可以抛出去由主函数来处理
void fun(int x){
try{
if (x==0)
throw "<EFBFBD>";
throw "异常";
}catch(...){
cout<<"in fun"<<endl;
throw 1;

View File

@@ -3,7 +3,7 @@
using namespace std;
/*
* ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 时钟类
*/
class Clock
{
@@ -17,7 +17,7 @@ public:
};
/*
* ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 时钟类构造函数
*/
Clock::Clock(int h,int m, int s)
{
@@ -28,11 +28,11 @@ Clock::Clock(int h,int m, int s)
Second= s;
}
else
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"<<endl;
cout<<"输入的时间格式错误!"<<endl;
}
/*
* <EFBFBD><EFBFBD>ʾʱ<EFBFBD><EFBFBD>
* 显示时间
*/
void Clock::ShowTime()
{
@@ -40,7 +40,7 @@ void Clock::ShowTime()
}
/*
* ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ׺++<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 时间递增一秒(重载前缀++运算符)
*/
Clock& Clock::operator ++()
{
@@ -60,7 +60,7 @@ Clock& Clock::operator ++()
}
/*
* ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD>׺++<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 时间递增一秒(重载后缀++运算符)
*/
Clock Clock::operator ++(int)
{
@@ -70,24 +70,24 @@ Clock Clock::operator ++(int)
}
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 主函数
*/
int main()
{
Clock myClock(23,59,59);
cout<<"<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<EFBFBD><EFBFBD>Ϊ:\t\t";
cout<<"初始化显示时间为:\t\t";
myClock.ShowTime();
cout<<"ִ<EFBFBD><EFBFBD>myClock++<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ:\t";
cout<<"执行myClock++后的时间为:\t";
//<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>ShowTime()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>myClock=23:59:59<EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>myClock++<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱmyClock=00:00:00
//先执行ShowTime(),输出myClock=23:59:59
//再执行myClock++,此时myClock=00:00:00
(myClock++).ShowTime();
cout<<"ִ<EFBFBD><EFBFBD>++myClock<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ:\t";
cout<<"执行++myClock后的时间为:\t";
//<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>++myClock<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱmyClock=00:00:01
//<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>ShowTime()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>myClock=00:00:01
//先执行++myClock,此时myClock=00:00:01
//再执行ShowTime(),输出myClock=00:00:01
(++myClock).ShowTime();
system("pause");
}

View File

@@ -35,7 +35,7 @@ template<typename T,int MAXSIZE> void Stack<T,MAXSIZE>::push(T e){
elems[++top]=e;
}
else{
cout<<"ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>벻Ҫ<EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>";
cout<<"栈已满,请不要再加入元素!";
return;
}
}
@@ -44,7 +44,7 @@ template<typename T,int MAXSIZE> T Stack<T,MAXSIZE>::pop(){
return elems[top--];
}
else{
cout<<"ջ<EFBFBD>ѿգ<EFBFBD><EFBFBD>벻Ҫ<EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>";
cout<<"栈已空,请不要再弹出元素!";
return 0;
}
}

View File

@@ -21,7 +21,7 @@ class Array{
template<class T> T& Array<T>::operator[](int i){
if(i<0||i>MAXSIZE-1){
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Խ<EFBFBD>"<<endl;
cout<<"数组下标越界!"<<endl;
exit(0);
}
return array[i];

View File

@@ -26,12 +26,12 @@ class Employee{
class Manager:public Employee{
public:
//ֱ<EFBFBD>ӵ<EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD>
//直接调用构造方法传递,基类构造方法有参数,派生类必须通过构造方法,在初始化列表中传递参数
Manager(const char *name,const char *id,int week):Employee(name,id){
WeeklySalary=week*1000;
}
void display(){
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<getName()<<"\t"<<getId()<<"\t"<<WeeklySalary<<endl;
cout<<"经理:"<<getName()<<"\t"<<getId()<<"\t"<<WeeklySalary<<endl;
}
private:
int WeeklySalary;
@@ -43,7 +43,7 @@ class SaleWorker:public Employee{
workerMoney=baseMoney+x*0.05*profit;
}
void display(){
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>"<<getName()<<"\t"<<getId()<<"\t"<<workerMoney<<endl;
cout<<"销售员:"<<getName()<<"\t"<<getId()<<"\t"<<workerMoney<<endl;
}
private:
@@ -56,7 +56,7 @@ class HourWorker:public Employee{
TotalMoney=h*hourMoney;
}
void display(){
cout<<"Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<getName()<<"\t"<<getId()<<"\t"<<TotalMoney<<endl;
cout<<"小时工:"<<getName()<<"\t"<<getId()<<"\t"<<TotalMoney<<endl;
}
private:
float hourMoney=100.0;
@@ -67,23 +67,23 @@ class HourWorker:public Employee{
int main(int argc, char const *argv[])
{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>";
cout<<"请输入工作周:";
int week;
cin>>week;
Manager m("С<EFBFBD><EFBFBD>","11111111",week);
Manager m("小王","11111111",week);
m.display();
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入销售利润:";
int profit;
cin>>profit;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入销售件数:";
int x;
cin>>x;
SaleWorker s("С<EFBFBD><EFBFBD>","222222",profit,x);
SaleWorker s("小李","222222",profit,x);
s.display();
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD>";
cout<<"请输入工作小时:";
int hour;
cin>>hour;
HourWorker h("С<EFBFBD><EFBFBD>","333333",hour);
HourWorker h("小何","333333",hour);
h.display();
system("pause");
return 0;

View File

@@ -36,21 +36,21 @@ int main(int argc, char const *argv[])
int Math,Chinese,English;
fstream ioFile;
ioFile.open("d:/per.dat",ios::out|ios::app);
cout<<"---------<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ----------\n";
cout<<"---------建立学生档案信息----------\n";
do{
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入姓名:";
cin>>Name;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>ţ<EFBFBD>";
cout<<"请输入身份证号:";
cin>>Id;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入数学成绩:";
cin>>Math;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入汉语成绩:";
cin>>Chinese;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>";
cout<<"请输入英语成绩:";
cin>>English;
Person per(Name,Id,Math,Chinese,English);
ioFile.write((char *)&per,sizeof(per));
cout<<"<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/y) ";
cout<<"您是否继续建档?(Y/y) ";
cin>>ch;
}while(ch=='y'||ch=='Y');
ioFile.close();
@@ -64,7 +64,7 @@ int main(int argc, char const *argv[])
ioFile.read((char*)&p,sizeof(p));
}
ioFile.close();
cout<<"---------<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ-----------"<<endl;
cout<<"---------输出档案信息-----------"<<endl;
for(vt=v.begin();vt!=v.end();vt++){
(*vt).display();
}

View File

@@ -26,13 +26,13 @@ Sales &operator<<(ostream&os,Sales &s){
}
Sales &operator>>(istream&is,Sales &s){
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n";
cout<<"输入雇员的姓名,身份证,年龄:\n";
is>>s.name>>s.id>>s.age;
}
int main(int argc, char const *argv[])
{
Sales s("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","15611",26);
Sales s("张三","15611",26);
cout<<s;
cin>>s;
cout<<s;

View File

@@ -9,9 +9,9 @@ int main(int argc, char const *argv[])
cout<<setw(30)<<left<<setfill('*')<<s<<endl;
cout<<dec<<setprecision(4)<<digit<<endl;
cout<<dec<<15<<endl;
//setbase(int x)<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD>ƺ󣬺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//setbase(int x)设置进制后,后面所有操作都是按照这个进制来计算!
cout<<setbase(10)<<15<<endl;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><32><CEBB>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
//四舍五入,并保留2位有效数组
float x=6.6937;
cout<<float(int(x*1000+0.5)/1000.0)<<endl;
system("pause");

View File

@@ -1,12 +1,12 @@
/*
<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Circle<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Circle<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>int<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>İ뾶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>double<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
有一个类Circle设计该类的类型转换函数当将Circle对象转换成int型时返回圆的半径当将它转换成double型时就返回圆的周长当将它转换成float型时就返回圆的面积。
*/
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD>Ҫת<EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>type<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
类型转换函数没有参数。
类型转换函数没有返回类型。
类型转换函数必须返回将要转换成的type类型数据。
*/
@@ -23,10 +23,10 @@ public:
};
int main(){
Circle c(2.3,3.4,2.5);
int r=c; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>operator int()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Circle<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>int
double length=c; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>operator double()<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>double
float area=c; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>operator float()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Circle<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>float
double len=(double) c; //<EFBFBD><EFBFBD>Cirlce<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>double
int r=c; //调用operator int(),将Circle类型转换成int
double length=c; //调用operator double(),转换成double
float area=c; //调用operator float(),将Circle类型转换成float
double len=(double) c; //Cirlce类型对象强制转换成double
cout<<r<<endl;
cout<<length<<endl;
cout<<len<<endl;