diff --git "a/practical_exercises/10_day_practice/day1/\346\263\250\351\207\212.cpp" "b/practical_exercises/10_day_practice/day1/\346\263\250\351\207\212.cpp" index 90931ac6..d5cbf60f 100644 --- "a/practical_exercises/10_day_practice/day1/\346\263\250\351\207\212.cpp" +++ "b/practical_exercises/10_day_practice/day1/\346\263\250\351\207\212.cpp" @@ -1,16 +1,16 @@ #include -һָע +一种条件编译指令注释 -//һעͷ +//另一种注释方法 #if 0 asd #endif -//ע -//ָ +//打开注释 +//条件编译指令 #if 1 asData #endif diff --git "a/practical_exercises/10_day_practice/day1/\350\201\224\345\220\210\344\275\223\345\255\246\344\271\240.cpp" "b/practical_exercises/10_day_practice/day1/\350\201\224\345\220\210\344\275\223\345\255\246\344\271\240.cpp" index c0adee00..e5ba04ec 100644 --- "a/practical_exercises/10_day_practice/day1/\350\201\224\345\220\210\344\275\223\345\255\246\344\271\240.cpp" +++ "b/practical_exercises/10_day_practice/day1/\350\201\224\345\220\210\344\275\223\345\255\246\344\271\240.cpp" @@ -1,6 +1,6 @@ #include using namespace std; -//ͬڴַ +//相同的内存地址 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; //ǵһintռֵ + 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; diff --git "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-1.cpp" "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-1.cpp" index 2f1c9e47..38388630 100644 --- "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-1.cpp" +++ "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-1.cpp" @@ -1,4 +1,4 @@ -//cinַʱַкпհ׾Ͳ롣ΪհַʱcinΪַˡ +//用cin输入字符串数据时,如果字符串中含有空白就不能完整输入。因为遇到空白字符时,cin就认为字符串结束了。 #include using namespace std; int main(int argc, char const *argv[]) @@ -11,8 +11,8 @@ int main(int argc, char const *argv[]) return 0; } /* -aǣ +若a的内容是: this is a string! - -ӦijԱ +就难以输入啦! +这样的数据应用输入流类的成员函数输入 */ \ No newline at end of file diff --git "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-3.cpp" "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-3.cpp" index 1e314fec..8fa19690 100644 --- "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-3.cpp" +++ "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-3.cpp" @@ -1,6 +1,6 @@ #include using namespace std; -//ԭ +//函数原型 //put(char c) //write(const char*c, int n) int main(){ diff --git "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-5.cpp" "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-5.cpp" index 6c403229..edb386c3 100644 --- "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-5.cpp" +++ "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-5.cpp" @@ -7,11 +7,11 @@ int main(){ double d=-1234.8976; cout<>name; while(!ioFile.eof()) { ioFile>>chinese>>math>>computer; diff --git "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/get()12-2.cpp" "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/get()12-2.cpp" index 99fe10a9..af979ca4 100644 --- "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/get()12-2.cpp" +++ "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/get()12-2.cpp" @@ -1,4 +1,4 @@ -//12-2 úgetgetlineȡݡ +//【例12-2】 用函数get和getline读取数据。 #include using namespace std; int main() @@ -14,8 +14,8 @@ int main() } /* -÷a = cin.get() ? ?cin.get(a) -ַ㹻س -˵ǵַ룬;һַASCALL뵽a -cinͬcin.get()ڻ[enter][space][tab]ΪǼڻ +用法:a = cin.get() ?或者 ?cin.get(a) +结束条件:输入字符足够后回车 +说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中 +处理方法:与cin不同,cin.get()在缓冲区遇到[enter],[space],[tab]不会作为舍弃,而是继续留在缓冲区中 */ \ No newline at end of file diff --git "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/getline()12-2-2.cpp" "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/getline()12-2-2.cpp" index e6e0ceff..cda1d14d 100644 --- "a/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/getline()12-2-2.cpp" +++ "b/practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/getline()12-2-2.cpp" @@ -1,9 +1,9 @@ #include using namespace std; /* -1cin.getline(arrayname,size)cin.get(arrayname,size) -cin.get(arrayname,size)[enter]ʱĿǰ룬ɾе[enter] -cin.getline(arrayname,size)[enter]ʱǰ룬ǻɾе[enter] +(1)cin.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< #include -//һܹ͵Ķ̬ +//向量是一个能够存放任意类型的动态数组 #include #include using namespace std; @@ -25,20 +25,20 @@ class Person{ int main(int argc, char const *argv[]) { vector v; - vector::iterator pos;//һvectorãָvectorԪ + vector::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<<"------˵------"<>Name; - cout<<"֤ţ "; + cout<<"身份证号: "; cin>>ID; - cout<<"䣺 "; + cout<<"年龄: "; cin>>Age; - cout<<"ַ "; + 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---------ļж--------"<>seed; srand(seed); int sum = rolldice(); diff --git "a/practical_exercises/10_day_practice/day2/\346\236\232\344\270\276\347\261\273\345\236\213.cpp" "b/practical_exercises/10_day_practice/day2/\346\236\232\344\270\276\347\261\273\345\236\213.cpp" index c2191a50..334531ef 100644 --- "a/practical_exercises/10_day_practice/day2/\346\236\232\344\270\276\347\261\273\345\236\213.cpp" +++ "b/practical_exercises/10_day_practice/day2/\346\236\232\344\270\276\347\261\273\345\236\213.cpp" @@ -14,7 +14,7 @@ int main(int argc, char const *argv[]) { cout<>disks; hanoi(disks,'A','B','C'); diff --git "a/practical_exercises/10_day_practice/day2/\351\200\222\345\275\2222.cpp" "b/practical_exercises/10_day_practice/day2/\351\200\222\345\275\2222.cpp" index 79c35603..bf5e1b6b 100644 --- "a/practical_exercises/10_day_practice/day2/\351\200\222\345\275\2222.cpp" +++ "b/practical_exercises/10_day_practice/day2/\351\200\222\345\275\2222.cpp" @@ -3,7 +3,7 @@ using namespace std; int f(int n, int k); int main(int argc, char const *argv[]) { - cout<<"nk"<>n; cin>>k; diff --git "a/practical_exercises/10_day_practice/day2/\351\235\231\346\200\201\345\217\230\351\207\217.cpp" "b/practical_exercises/10_day_practice/day2/\351\235\231\346\200\201\345\217\230\351\207\217.cpp" index be3bd0ec..2fe4fbd0 100644 --- "a/practical_exercises/10_day_practice/day2/\351\235\231\346\200\201\345\217\230\351\207\217.cpp" +++ "b/practical_exercises/10_day_practice/day2/\351\235\231\346\200\201\345\217\230\351\207\217.cpp" @@ -1,10 +1,10 @@ #include using namespace std; -int i=1; // i Ϊȫֱо̬ڡ +int i=1; // i 为全局变量,具有静态生存期。 int main(void) { - static int a; // ֲ̬ȫֲɼ - int b=-10; // b, cΪֲж̬ڡ + 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Ϊֲ̬ȫֲɼ - //ֻһν뺯ʱʼ - int c=10; // CΪֲж̬ - //ÿν뺯ʱʼ + // a,b为静态局部变量,具有全局寿命,局部可见。 + //只第一次进入函数时被初始化。 + int c=10; // C为局部变量,具有动态生存期 + //每次进入函数时都初始化。 a=a+2; i=i+32; c=c+5; cout<<"---OTHER---\n"; cout<<" i: "< using namespace std; -// +//函数声明 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; } -//ӹؼinline +//加关键字inline inline double CalArea(double radius) { return 3.14*radius*radius; diff --git "a/practical_exercises/10_day_practice/day3/\345\207\275\346\225\260\347\273\274\345\220\210\347\273\203\344\271\240\351\242\230.cpp" "b/practical_exercises/10_day_practice/day3/\345\207\275\346\225\260\347\273\274\345\220\210\347\273\203\344\271\240\351\242\230.cpp" index d1d2a2d4..1fb09f87 100644 --- "a/practical_exercises/10_day_practice/day3/\345\207\275\346\225\260\347\273\274\345\220\210\347\273\203\344\271\240\351\242\230.cpp" +++ "b/practical_exercises/10_day_practice/day3/\345\207\275\346\225\260\347\273\274\345\220\210\347\273\203\344\271\240\351\242\230.cpp" @@ -1,9 +1,9 @@ /* -һԲӾͼʾΧһԲ͹Χդդ۸Ϊ35Ԫ/ףΪ20Ԫ/ƽס -Ϊ3ףӾذ뾶ɼ롣Ҫ̼㲢դۡ +一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。 +过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。 -ͼԲǶСԲ -СԲڴԲм䣬СԲΪӾأԲСԲΪ +图形描述:大圆嵌套小圆: +小圆在大圆中间,小圆为游泳池,大圆与小圆间隔为过道。 */ #include using namespace std; @@ -25,13 +25,13 @@ Circle::Circle(float r) radius=r; } -// Բܳ +// 计算圆的周长 float Circle::Circumference() const { return 2 * PI * radius; } -// Բ +// 计算圆的面积 float Circle::Area() const { return PI * radius * radius; @@ -42,20 +42,20 @@ int main(int argc, char const *argv[]) float radius; float FenceCost, ConcreteCost; - // ʾû뾶 + // 提示用户输入半径 cout<<"Enter the radius of the pool: "; cin>>radius; - // Circle + // 声明 Circle 对象 Circle Pool(radius); Circle PoolRim(radius + 3); - // դ۲ + // 计算栅栏造价并输出 FenceCost = PoolRim.Circumference() * FencePrice; - cout << "Fencing Cost is " << FenceCost << endl; + cout << "Fencing Cost is ¥" << FenceCost << endl; - // ۲ + // 计算过道造价并输出 ConcreteCost = (PoolRim.Area() - Pool.Area())*ConcretePrice; - cout << "Concrete Cost is " << ConcreteCost << endl; + cout << "Concrete Cost is ¥" << ConcreteCost << endl; system("pause"); return 0; } diff --git "a/practical_exercises/10_day_practice/day3/\347\261\273\345\211\215\345\220\221\345\243\260\346\230\216.cpp" "b/practical_exercises/10_day_practice/day3/\347\261\273\345\211\215\345\220\221\345\243\260\346\230\216.cpp" index e2483b57..ffa33d43 100644 --- "a/practical_exercises/10_day_practice/day3/\347\261\273\345\211\215\345\220\221\345\243\260\346\230\216.cpp" +++ "b/practical_exercises/10_day_practice/day3/\347\261\273\345\211\215\345\220\221\345\243\260\346\230\216.cpp" @@ -1,31 +1,31 @@ /* -ʹǰȻԽһЩ⣬ܵġҪעǣ -ʹǰṩһ֮ǰĶ -ҲԱʹøĶ뿴ijΣ +使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是, +尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象, +也不能在内联成员函数中使用该类的对象。请看下面的程序段: */ -//һ +//第一种 #include -class Fred; //ǰ +class Fred; //前向引用声明 class Barney { - Fred x; //Fredв + Fred x; //错误:类Fred的声明尚不完善 }; class Fred { Barney y; }; -//ڶ -class Fred; //ǰ +//第二种 +class Fred; //前向引用声明 class Barney { public: void method() { - x->yabbaDabbaDo(); //FredĶڶ֮ǰʹ + x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用 } private: - Fred* x; //ȷǰFredĶָ + Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针 }; class Fred { @@ -36,5 +36,5 @@ class Fred { }; /* -ܽ᣺ʹǰʱֻʹñķţ漰κϸڡ +总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。 */ \ No newline at end of file diff --git "a/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2601.cpp" "b/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2601.cpp" index 3edfa35a..f99d2be5 100644 --- "a/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2601.cpp" +++ "b/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2601.cpp" @@ -1,8 +1,8 @@ /* -֪ʶ㣺 -̬Ա -ʹþ̬Ա -̬Աֻڸľ̬ݳԱ̬Ա +知识点: +静态成员函数 +类外代码可以使用类名和作用域操作符来调用静态成员函数。 +静态成员函数只能引用属于该类的静态数据成员或静态成员函数。 */ #include using namespace std; diff --git "a/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2602.cpp" "b/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2602.cpp" index 168bb40b..e999eb5b 100644 --- "a/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2602.cpp" +++ "b/practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2602.cpp" @@ -10,9 +10,9 @@ class A void A::f(A a) { - //̬Աֻڸľ̬ݳԱ̬Ա - // cout< using namespace std; @@ -17,7 +17,7 @@ class Point void GetC() {cout<<" Object id="< #include using namespace std; @@ -13,9 +13,9 @@ class Point{ } friend float Distance(Point &a,Point &b); private: - int X,Y;//˽ݳԱ + int X,Y;//私有数据成员 }; -//ͨһģΪһģԪһģܹõһģбDZصϢ +//通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。 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<<"Ϊ"< using namespace std; /* -һΪһԪгԱܷʶԷ˽гԱ -﷨Ԫһʹfriend˵ +若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。 +声明语法:将友元类名在另一个类中使用friend修饰说明。 */ /* -BAԪBijԱͿԷA˽кͱݣ -AijԱȴܷB˽Сݡ +如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据, +但A类的成员函数却不能访问B类的私有、保护数据。 */ class A{ friend class B; @@ -45,5 +45,5 @@ int main(int argc, char const *argv[]) } /* -BAԪBijԱͿԷA˽кͱݣAijԱȴܷB˽С +如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却不能访问B类的私有、保护数据 */ \ No newline at end of file diff --git "a/practical_exercises/10_day_practice/day4/\346\213\267\350\264\235\346\236\204\351\200\240\345\207\275\346\225\260/clock.cpp" "b/practical_exercises/10_day_practice/day4/\346\213\267\350\264\235\346\236\204\351\200\240\345\207\275\346\225\260/clock.cpp" index 702bf9e0..355cb077 100644 --- "a/practical_exercises/10_day_practice/day4/\346\213\267\350\264\235\346\236\204\351\200\240\345\207\275\346\225\260/clock.cpp" +++ "b/practical_exercises/10_day_practice/day4/\346\213\267\350\264\235\346\236\204\351\200\240\345\207\275\346\225\260/clock.cpp" @@ -15,7 +15,7 @@ Clock::Clock(Clock &c) } void Clock::SetTime(int NewH,int NewM,int NewS) { - //Ӳthisָ붼һ + //加不加this指针都一样 this->Hour=NewH; this->Minute=NewM; this->Second=NewS; @@ -26,7 +26,7 @@ void Clock::ShowTime() cout<Minute<Second<setA(20); cout<getA()<getA()< class B @@ -19,16 +19,16 @@ class D: public B public: void f() { - i=1;//cannot access ಻ɷʻ˽гԱ - j=2;//ԷʻౣԱ + i=1;//cannot access 派生类不可访问基类私有成员 + j=2;//派生类可以访问基类保护成员 k=3; } }; int main() { B b; - b.i=1;//cannot access ˽гԱʹ߲ܷ - b.j=2; //cannot access Աʹ߲ܷ + b.i=1;//cannot access 私有成员,类的使用者不能访问 + b.j=2; //cannot access 保护成员,类的使用者不能访问 b.k=3; system("pause"); return 0; diff --git "a/practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\344\277\235\346\212\244\347\273\247\346\211\277.cpp" "b/practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\344\277\235\346\212\244\347\273\247\346\211\277.cpp" index a269f4ef..0272779e 100644 --- "a/practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\344\277\235\346\212\244\347\273\247\346\211\277.cpp" +++ "b/practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\344\277\235\346\212\244\347\273\247\346\211\277.cpp" @@ -1,7 +1,7 @@ /* -ʽΪprotectedļ̳гΪ̳Уּ̳зʽ£ -publicԱлprotectedԱ -protectedprivateԱбԭķȨ +派生方式为protected的继承称为保护继承,在这种继承方式下, +基类的public成员在派生类中会变成protected成员, +基类的protected和private成员在派生类中保持原来的访问权限 */ #include using namespace std; @@ -17,21 +17,21 @@ class Derived:protected Base{ int y; public: void sety(int n){ y=n; } - void sety(){ y=getx();} //ʻıԱ + void sety(){ y=getx();} //访问基类的保护成员 void showy(){ cout< using namespace std; class A { diff --git "a/practical_exercises/10_day_practice/day5/\350\260\203\347\224\250\350\247\204\345\210\231/\347\233\264\346\216\245\345\237\272\347\261\273\344\270\216\351\227\264\346\216\245\345\237\272\347\261\273.cpp" "b/practical_exercises/10_day_practice/day5/\350\260\203\347\224\250\350\247\204\345\210\231/\347\233\264\346\216\245\345\237\272\347\261\273\344\270\216\351\227\264\346\216\245\345\237\272\347\261\273.cpp" index ab06668b..a31411f0 100644 --- "a/practical_exercises/10_day_practice/day5/\350\260\203\347\224\250\350\247\204\345\210\231/\347\233\264\346\216\245\345\237\272\347\261\273\344\270\216\351\227\264\346\216\245\345\237\272\347\261\273.cpp" +++ "b/practical_exercises/10_day_practice/day5/\350\260\203\347\224\250\350\247\204\345\210\231/\347\233\264\346\216\245\345\237\272\347\261\273\344\270\216\351\227\264\346\216\245\345\237\272\347\261\273.cpp" @@ -1,4 +1,4 @@ -//ͬʱֱӻͼӻʱÿֱֻӻĹ졣 +//当同时存在直接基类和间接基类时,每个派生类只负责其直接基类的构造。 #include using namespace std; class A { diff --git "a/practical_exercises/10_day_practice/day6/\347\272\257\350\231\232\345\207\275\346\225\260\345\222\214\346\212\275\350\261\241\347\261\273/\346\212\275\350\261\241\347\261\273.cpp" "b/practical_exercises/10_day_practice/day6/\347\272\257\350\231\232\345\207\275\346\225\260\345\222\214\346\212\275\350\261\241\347\261\273/\346\212\275\350\261\241\347\261\273.cpp" index 7ee21ba1..f733f019 100644 --- "a/practical_exercises/10_day_practice/day6/\347\272\257\350\231\232\345\207\275\346\225\260\345\222\214\346\212\275\350\261\241\347\261\273/\346\212\275\350\261\241\347\261\273.cpp" +++ "b/practical_exercises/10_day_practice/day6/\347\272\257\350\231\232\345\207\275\346\225\260\345\222\214\346\212\275\350\261\241\347\261\273/\346\212\275\350\261\241\347\261\273.cpp" @@ -13,21 +13,21 @@ class Figure{ class Trianle:public Figure{ public: void area(){ - cout<<""<area(); - // + //定义抽象类引用 Figure &rF=t; rF.set(20,20); rF.area(); diff --git "a/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\344\276\213\345\255\220.cpp" "b/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\344\276\213\345\255\220.cpp" index 16501415..589fafe1 100644 --- "a/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\344\276\213\345\255\220.cpp" +++ "b/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\344\276\213\345\255\220.cpp" @@ -1,7 +1,7 @@ //Eg7-1.cpp -//ָָʱ,麯麯 -//EmployeeprintΪ麯ɷʵManagerprint麯ֻܷʵEmployeeprint +//基类指针或引用指向派生类对象时,虚函数与非虚函数区别: +//声明Employee的print为虚函数,则可访问到Manager的print函数,非虚函数,则只能访问到Employee的print #include #include using namespace std; @@ -30,7 +30,7 @@ float Employee::getSalary(){ return 0.0; } void Employee::print(){ - cout<<""<print(); @@ -63,4 +63,4 @@ int main(){ system("pause"); return 0; } -//VirtualؼʵǸ֪ϵͳָΪvirtualĺö̬ʽ롣 +//Virtual关键字其实质是告知编译系统,被指定为virtual的函数采用动态联编的形式编译。 diff --git "a/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\347\211\271\346\200\247.cpp" "b/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\347\211\271\346\200\247.cpp" index 8ee62f75..287243d1 100644 --- "a/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\347\211\271\346\200\247.cpp" +++ "b/practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\347\211\271\346\200\247.cpp" @@ -13,7 +13,7 @@ class C: public B { public: void f(int i){cout<<"C::f()"<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 + 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; } diff --git "a/practical_exercises/10_day_practice/day7/=\345\217\267\350\277\220\347\256\227\347\254\246/=\344\276\213\351\242\230.cpp" "b/practical_exercises/10_day_practice/day7/=\345\217\267\350\277\220\347\256\227\347\254\246/=\344\276\213\351\242\230.cpp" index b3e8d124..7b1ce0f2 100644 --- "a/practical_exercises/10_day_practice/day7/=\345\217\267\350\277\220\347\256\227\347\254\246/=\344\276\213\351\242\230.cpp" +++ "b/practical_exercises/10_day_practice/day7/=\345\217\267\350\277\220\347\256\227\347\254\246/=\344\276\213\351\242\230.cpp" @@ -1,4 +1,4 @@ -//ch.cppi +//例题ch.cppi #include using namespace std; class X{ @@ -9,8 +9,8 @@ class X{ int main () { X obj1, obj2, obj3; - obj1 = obj2; //ء= - obj1.operator= (obj2); //ء= - obj1 = obj2 = obj3; //ء= + obj1 = obj2; //调用重载“=” + obj1.operator= (obj2); //调用重载“=” + obj1 = obj2 = obj3; //调用重载“=” system("pause"); } diff --git "a/practical_exercises/10_day_practice/day7/[]\350\277\220\347\256\227\347\254\246/[]\344\276\213\351\242\230(\351\207\215\347\202\271).cpp" "b/practical_exercises/10_day_practice/day7/[]\350\277\220\347\256\227\347\254\246/[]\344\276\213\351\242\230(\351\207\215\347\202\271).cpp" index 88a3d2a8..77bc4f50 100644 --- "a/practical_exercises/10_day_practice/day7/[]\350\277\220\347\256\227\347\254\246/[]\344\276\213\351\242\230(\351\207\215\347\202\271).cpp" +++ "b/practical_exercises/10_day_practice/day7/[]\350\277\220\347\256\227\347\254\246/[]\344\276\213\351\242\230(\351\207\215\347\202\271).cpp" @@ -2,27 +2,27 @@ #include #include using namespace std; -struct Person{ //ְϢĽṹ +struct Person{ //职工基本信息的结构 double salary; char *name; }; class SalaryManaege{ - Person *employ; //ְϢ - int max; //±Ͻ - int n; //еʵְ + Person *employ; //存放职工信息的数组 + int max; //数组下标上界 + int n; //数组中的实际职工人数 public: SalaryManaege(int Max=0){ max=Max; n=0; employ=new Person[max]; } - double &operator[](char *Name) { //[] + double &operator[](char *Name) { //重载[],返回引用 Person *p; for(p=employ;pname,Name)==0) return p->salary; - // + //不存在情况处理 p=employ + n++; p->name=new char[strlen(Name)+1]; strcpy(p->name,Name); @@ -37,13 +37,13 @@ class SalaryManaege{ }; int main(){ SalaryManaege s(3); - s[""]=2188.88; - s["˹"]=1230.07; - s[""]=3200.97; - cout<<"\t"< using namespace std; class Complex { @@ -21,7 +21,7 @@ Complex Complex::operator -(Complex b) { return Complex(r-b.r,i-b.i); } -//˵㷨 +//求复数相乘的算法 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; } -//㷨 +//求复数相除的算法 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; //ȷ - // a=2+b; // + a=b+2; //正确 + // a=2+b; //错误 a.display(); c3=c1+c2; c4=c1-c2; diff --git a/practical_exercises/10_day_practice/day8/STL/map_se.cpp b/practical_exercises/10_day_practice/day8/STL/map_se.cpp index 6edc1864..3943ebb9 100644 --- a/practical_exercises/10_day_practice/day8/STL/map_se.cpp +++ b/practical_exercises/10_day_practice/day8/STL/map_se.cpp @@ -5,7 +5,7 @@ using namespace std; int main(int argc, char const *argv[]) { - string name[]={"","",""}; + string name[]={"张三","李四","王麻子"}; double salary[]={1200,2000,1450}; mapsal; map::iterator p; @@ -18,7 +18,7 @@ int main(int argc, char const *argv[]) cout<first<<"\t"<second<>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<<"ûҵӦĽ"<>person; map::iterator it; it = sal.find(person); if(it!=sal.end()){ - cout<<"ҳɹ"<<(*it).first<<":"<<(*it).second<first<second< T Max(T a,T b) { return (a>b)?a:b; } -//ػ -//template <> <ػ>() {} +//特化 +//template <> 返回类型 函数名<特化的数据类型>(参数表) {} template<>char * Max(char *a,char *b) { return (strcmp(a,b)>=0)?a:b; } int main(){ float c=5.1,d=3.2; - cout<<"2,3ֵǣ"<b)?a:b; } /* -C++ʵģĹУֻǼ򵥵ؽģ滻ɵʵεͣԴģ庯в͵κת +C++在实例化函数模板的过程中,只是简单地将模板参数替换成调用实参的类型,并以此生成模板函数,不会进行参数类型的任何转换。 */ int main(){ double a=2,b=3.4; float c=5.1,d=3.2; - //ģʱв͵ǿת - cout<<"2, 3.2 ֵǣ"<('a',3)<('a',3)< -//עһ㣬maxminʹõʱͻдһд룬Ҫı亯ģֱ֣ʹstd::coutstd::endl +//注意一点,max与min使用的时候,容易引起冲突,如果写了下面这一行代码,则要改变函数模板名字,否则直接使用std::cout与std::endl using namespace std; /* -ҪclassؼclassһȻͬĸɣDzͬġ -classʾTһͲκͣintfloatcharȣûstructenumclassԶ͡ +不要把这里的class与类的声明关键字class混淆在一起,虽然它们由相同的字母组成,但含义是不同的。 +这里的class表示T是一个类型参数,可以是任何数据类型,如int、float、char等,或者用户定义的struct、enum或class等自定义数据类型。 */ template T Min(T a,T b) { return (aдʽȫȼ۵ģ +为了区别类与模板参数中的类型关键字class,标准C++提出?了用typename作为模板参数的类型关键字,同时也支持使用class。 +比如,把min定义的template 写成下面的形式是完全等价的: */ template T myMin(T a, T b){ @@ -20,22 +20,22 @@ T myMin(T a, T b){ } /* -ģʵڵģ庯ʱжԺģĵʱ -Żݵʵεľͣȷģͣ -ô滻ģеģܹ͵ĺ룬ģ庯 -ηͬIJʱֻڵ1νʵֻڵ1εʱģ庯 -֮ͬ͵IJʱģ庯õ1ʵɵģ庯 +模板实例化发生在调用模板函数时。当编译器遇到程序中对函数模板的调用时, +它才会根据调用语句中实参的具体类型,确定模板参数的数据类型, +并用此类型替换函数模板中的模板参数,生成能够处理该类型的函数代码,即模板函数。 +当多次发生类型相同的参数调用时,只在第1次进行实例化。编译器只在第1次调用时生成模板函数, +当之后遇到相同类型的参数调用时,不再生成其他模板函数,它将调用第1次实例化生成的模板函数。 */ int main(){ double a=2,b=3.4; float c=2.3,d=3.2; - cout<<"23 Сֵǣ"<(2,3)<(2,3)< using namespace std; @@ -32,14 +32,14 @@ class Stack{ } }; /* -ԭͣ -template <ģб> -ֵ ģ<ģ>::Ա (б){}; +原型: +template <模板参数列表> +返回值类型 类模板名<模板参数名表>::成员函数名 (参数列表){}; */ template void Stack::push(T e){ if(full()){ - cout<<"ջԪˣ"; + cout<<"栈已满,不能再添加元素了!"; return; } elem[++top]=e; @@ -48,7 +48,7 @@ void Stack::push(T e){ template T Stack::pop(){ if(empty()){ - cout<<"ջѿգٵԪˣ"<::pop(){ int main(int argc, char const *argv[]) { - //ģʵ + //类模板实例化 Stack iStack; Stack cStack; iStack.setEmpty(); diff --git "a/practical_exercises/10_day_practice/day8/\347\261\273\346\250\241\346\235\277/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226.cpp" "b/practical_exercises/10_day_practice/day8/\347\261\273\346\250\241\346\235\277/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226.cpp" index 3d84935f..cd520e54 100644 --- "a/practical_exercises/10_day_practice/day8/\347\261\273\346\250\241\346\235\277/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226.cpp" +++ "b/practical_exercises/10_day_practice/day8/\347\261\273\346\250\241\346\235\277/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226.cpp" @@ -1,4 +1,4 @@ -//һֱܹͨ࣬ӴȡԪأܹдӴС +//设计一通用数组类,它能够直接存取数组元素,并能够对数组进行从大到小的排序。 #include #include @@ -20,7 +20,7 @@ class Array{ template T& Array::operator[](int i){ if(i<0||i>Size-1){ - cout<<"\n±Խ磡"< void Array::Sort(){ a[i]=t; } } -//template <> ģ<ػ>::ػԱ(){} +//template <> 返回类型 类模板名<特化的数据类型>::特化成员函数名(参数表){} template<> void Array::Sort(){ int p; for(int i=0;i using namespace std; -//ڲٴthrow쳣ʱ򣬺Ҫ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..."< using namespace std; const int MAX=3; -class Full{}; //L1 ջʱ׳쳣 -class Empty{}; //L2 ջʱ׳쳣 +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 ջ쳣 + //s.push(40); //L5 将产生栈满异常 cout<<"stack(0)= "< + //pair插入 mp.insert(pair(key[2],value[2])); - //뷽ʽ - mp["addr"]="й"; - //ȡԪ - //ѭȡԪ + //数组插入方式 + mp["addr"]="中国"; + //迭代器取出元素 + //循环取出元素 for(iter=mp.begin();iter!=mp.end();iter++){ cout<first<<"\t"<second<first,key1)==0){ - cout<first<<"ҳˣ"<<"ӦֵΪ"<second<first<<"查找出来了!"<<"对应的值为:"<second<first<<"keyҳˣ"<<"ӦvalueΪ"<second<first<<"按照key查找出来了!"<<"对应的value为:"<second<first,drop_key)==0){ - cout<first<<"keyҳˣ"<<"ӦvalueΪ"<second<first<<"按照key查找出来了!"<<"对应的value为:"<second<second,drop_value)==0){ - cout<second<<"valueҳˣ"<<"ӦkeyΪ"<first<second<<"value查找出来了!"<<"对应的key为:"<first<first<<"\t"<second< using namespace std; -//쳣׳ȥ +//函数异常可以抛出去由主函数来处理 void fun(int x){ try{ if (x==0) - throw "쳣"; + throw "异常"; }catch(...){ cout<<"in fun"< void Stack::push(T e){ elems[++top]=e; } else{ - cout<<"ջ벻ҪټԪأ"; + cout<<"栈已满,请不要再加入元素!"; return; } } @@ -44,7 +44,7 @@ template T Stack::pop(){ return elems[top--]; } else{ - cout<<"ջѿգ벻ҪٵԪأ"; + cout<<"栈已空,请不要再弹出元素!"; return 0; } } diff --git "a/practical_exercises/key_exercises/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226\344\271\213\346\225\260\347\273\204.cpp" "b/practical_exercises/key_exercises/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226\344\271\213\346\225\260\347\273\204.cpp" index 6e768a1d..6844d7f1 100644 --- "a/practical_exercises/key_exercises/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226\344\271\213\346\225\260\347\273\204.cpp" +++ "b/practical_exercises/key_exercises/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226\344\271\213\346\225\260\347\273\204.cpp" @@ -21,7 +21,7 @@ class Array{ template T& Array::operator[](int i){ if(i<0||i>MAXSIZE-1){ - cout<<"±Խ磡"<>week; - Manager m("С","11111111",week); + Manager m("小王","11111111",week); m.display(); - cout<<""; + cout<<"请输入销售利润:"; int profit; cin>>profit; - cout<<"ۼ"; + cout<<"请输入销售件数:"; int x; cin>>x; - SaleWorker s("С","222222",profit,x); + SaleWorker s("小李","222222",profit,x); s.display(); - cout<<"빤Сʱ"; + cout<<"请输入工作小时:"; int hour; cin>>hour; - HourWorker h("С","333333",hour); + HourWorker h("小何","333333",hour); h.display(); system("pause"); return 0; diff --git "a/practical_exercises/key_exercises/\350\257\273\345\206\231\346\226\207\344\273\266\347\273\274\345\220\210\351\242\230.cpp" "b/practical_exercises/key_exercises/\350\257\273\345\206\231\346\226\207\344\273\266\347\273\274\345\220\210\351\242\230.cpp" index fd3f7c70..003fd080 100644 --- "a/practical_exercises/key_exercises/\350\257\273\345\206\231\346\226\207\344\273\266\347\273\274\345\220\210\351\242\230.cpp" +++ "b/practical_exercises/key_exercises/\350\257\273\345\206\231\346\226\207\344\273\266\347\273\274\345\220\210\351\242\230.cpp" @@ -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<<"---------ѧϢ----------\n"; + cout<<"---------建立学生档案信息----------\n"; do{ - cout<<""; + cout<<"请输入姓名:"; cin>>Name; - cout<<"֤ţ"; + cout<<"请输入身份证号:"; cin>>Id; - cout<<"ѧɼ"; + cout<<"请输入数学成绩:"; cin>>Math; - cout<<"뺺ɼ"; + cout<<"请输入汉语成绩:"; cin>>Chinese; - cout<<"Ӣɼ"; + cout<<"请输入英语成绩:"; cin>>English; Person per(Name,Id,Math,Chinese,English); ioFile.write((char *)&per,sizeof(per)); - cout<<"Ƿ(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<<"---------Ϣ-----------"<>(istream&is,Sales &s){ - cout<<"Ա֤䣺\n"; + cout<<"输入雇员的姓名,身份证,年龄:\n"; is>>s.name>>s.id>>s.age; } int main(int argc, char const *argv[]) { - Sales s("","15611",26); + Sales s("张三","15611",26); cout<>s; cout<