首页 > 代码库 > 范磊 C++ 第6章 面向对象

范磊 C++ 第6章 面向对象

  1 // section_6.cpp : Defines the entry point for the console application.  2 //范磊C++ 第6章 面向对象  3   4 #include "stdafx.h"  5 #include "iostream"  6   7   8            9 //6.3.7 对象只能调用类中存在的方法(函数) 10 using std :: cout; 11 class Human 12 { 13 public: 14     void walk() 15     { 16         cout << "我是人,我会走路.\n"; 17     } 18     void speak() 19     { 20         cout << "我是人,我会说话.\n"; 21     } 22     void run() 23     { 24         cout << "我是人,我会跑步.\n"; 25     } 26     void eat() 27     { 28         cout << "我是人,我会吃饭.\n"; 29     } 30     void sleep() 31     { 32         cout << "我是人,我会睡觉.\n"; 33     } 34 }; 35 //这里的成员函数的声明和定义都放在类里面. 36  37 void fun1() 38 { 39     Human Tom;        //Tom 是 Human 这个类创建的对象. 40     Tom.eat();        //Tom这个对象,可以使用类Human里面的void eat() 这public个函数 41     Tom.run();      //Tom这个对象,可以使用类Human里面的void run() 这个公public函数 42     Tom.sleep();    //Tom这个对象,可以使用类Human里面的void run() 这个公public函数 43     Tom.speak();    //Tom这个对象,可以使用类Human里面的void speak() 这个public函数 44     Tom.walk();        //Tom这个对象,可以使用类Human里面的void walk() 这个public函数 45      46 } 47  48 //--------------------------------------------------- 49 //6.4 公有_publi 50 class Human1 51 { 52 public: 53     int weight; 54 }; 55 //这里的成员函数的声明和定义都放在类里面. 56  57 void fun2() 58 { 59     Human1 Tom; 60     Tom.weight = 5;        //因为int weight 是public的.所以在 类外面也能使用. 61     cout << "Tom的体重为" << Tom.weight << ".\n"; 62  63     Human1 Mike; 64     Mike.weight = 6; 65     cout << "Mike的体重为" << Mike.weight << ".\n"; 66 }     67  68 //--------------------------------------------------- 69 //6.5 私有_private 70 class Human2 71 { 72 public: 73     void set(int w)        //这个public函数存在的目的就是为了能让外界改变 weight 这个私有变量值. 74     { 75         weight = w; 76     } 77     int print()            //这个public函数存在的目的就是为了能让外界打印出 weight 这个私有变量的值. 78     { 79         return weight; 80     } 81 private: 82     int weight;        //说明了 weight 这个变量是私有的.只有类里面的函数才能改变或者使用 weight. 83 };                    //所以要上面建立了 void set(int w) 和 int print() 这两个 public function. 84 //这里的成员函数的声明和定义都放在类里面. 85  86 void fun3() 87 { 88     Human2 Tom; 89     Tom.set(10);    //通过函数Tom.set(10)改变了 weight 的值为 10.  90     cout << "Tom的体重为" << Tom.print() << ".\n";        //通过函数Tom.print()获得了 weight 的值. 91  92     Human2 Mike; 93     Mike.set(20);    //通过函数Mike.set(20)改变了 weight 的值为 20.  94     cout << "Mike的体重为" << Mike.print() << ".\n";    //通过函数Mike.print()获得了 weight 的值 95 } 96  97 //--------------------------------------------------- 98 //6.5.1 私有_private 99 class Human3100 {101 private:102     int weight;103 public:104     void set(int w)        //直接改变set函数的内容,就可以改变了所有对象里面set的内容,修改程序很方便.105     {106         if(w > 0 && w <100)107         {108             weight = w;109         }110         else111         {112             cout <<"请输入一个大于0而小于100的数字,否则默认为0. \n";113             weight  = 0;114         }115     }116     int print()117     {118         return weight;119     }120 };121 //这里的成员函数的声明和定义都放在类里面.122 123 void fun4()124 {125     Human3 Tom;126     Tom.set(123);127     cout << "Tom 的体重为: " << Tom.print() << "\n" ;128 129     Human3 Mike;130     Mike.set(345);131     cout << "Mike 的体重为: " << Mike.print() << "\n" ; 132 }133 134 //---------------------------------------------------135 //6.6 成员函数的声明和定义136 class Human4137 {138 private:139     int weight;140 public:141     void set(int w);        //只对成员函数void set(int w)进行声明.没有进行定义.142     int print()                //对成员函数int print()进行声明同时也进行定义.143     {144         return weight;145     }146 };147 148 void Human4::set(int w)        //void set(int w) 在这里进行定义. 注意:149 {                            //1.因void set(int w) 属于类Human4的成员,所属 Human4,要在 Human4 后面加区域符 :: 150     if(w > 0 && w < 100)    //2.注意格式是: 函数类型 + 类名字 + :: + 函数名字151     {152         weight = w;153     }154     else155     {156         cout <<"请输入一个大于0而小于100的数字,否则默认为0. \n";157         weight  = 0;158     }159 }160 161 162 void fun5()163 {164     Human4 Tom;165     Tom.set(111);166     cout << "Tom 的体重为: " << Tom.print() << "\n" ;167 168     Human4 Mike;169     Mike.set(-05);170     cout << "Mike 的体重为: " << Mike.print() << "\n" ; 171 172 }173 174 //---------------------------------------------------175 //6.10 构造函数176 class rectangle177 {178 private:179     int length;180     int width;181 public:182     rectangle(int l, int w)        //类 rectangle 的构造函数,创建rectangle的对象时,会自动调用该函数183     {184         length = l;185         width = w;186     }187     int area()188     {189         return length * width ;190     }191 };192 void fun6()193 {194     rectangle a(3,4);            //创建rectangle的对象a,在创建a同时调用构造函数 rectangle(int l, int w)195     cout << a.area() << "\n" ;196 }197 198 //---------------------------------------------------199 //6.11 默认构造函数200 //当我们创造了一个类时不提供构造函数,系统会自动创建一个构造函数201 //系统生成的构造函数没有参数,不执行功能,只用于构造一个对象 如:rectangle()  { }202 class rectangle1203 {204 private:205     int length;206     int width;207 public:208     rectangle1()209     {210         cout << "构造一个长方形.\n" ;211     }212     rectangle1(int l, int w)213     {214         length = l;215         width = w;216     }217     int area()218     {219         return length * width ;220     }221 };222 223 void fun7()224 {225     rectangle1 a(5,6);            226     rectangle1 b;        227     cout << a.area() << "\n" ;228 }229 230 //---------------------------------------------------231 //6.12 析构函数(类前面 + ~)232 //析构函数作用:清楚由构造函数创建的内存. 用于对象被销毁后清除所占用的内存空间.233 //一个类只有一个析构函数234 class A235 {236 public:237     A();        //声明构造函数238     ~A();        //声明析构函数239 };240 A::A()        //定义构造函数241 {242     cout << "构造函数执行完毕." <<"\n" ;  243 }244 A::~A()        //定义析构函数245 {246     cout << "析构函数执行完毕." << "\n" ;247 }248 249 void fun8()250 {251     A a;252 }253 254 //---------------------------------------------------255 //6.113 析构对象数组256 class A1257 {258 public:259     A1();260     ~A1();261 };262 A1::A1()263 {264     cout << "构造函数执行完毕." << "\n" ; 265 }266 A1::~A1()267 {268     cout << "析构函数执行完毕." << "\n" ;269 }270 271 void fun9()272 {273     A1 a[2];    //分别执行了2次构造函数以后再执行了2次析构函数.因为这里建立了2个对象.274 }275 276 277 278 int main(int argc, char* argv[])279 {280     //fun1();        //6.3.7 独享只能调用类中存在的方法281     //fun2();        //6.4 公有_public282     //fun3();        //6.5 私有_private283     //fun4();        //6.5.1 私有_private284     //fun5();        //6.6 成员函数的声明和定义285     //fun6();        //6.10 构造函数286     //fun7();        //6.11 默认构造函数287     //fun8();        //6.12 析构函数288     fun9();            //6.113 析构对象数组289 290     return 0;291 }

 

范磊 C++ 第6章 面向对象