c++语言的学习笔记代码与笔记注释《面向对象部分》

  1 #include <iostream>
  2 /*这是C++中关于面向对象部分的具体笔记和代码
  3 */
  4 
  5 
  6 //定义类的语法形式;
  7 //类中的成员项目之间相互引用,直接使用成员;
  8 //类外引用成员的时候需要使用对象名访问public成员;
  9 class Person {
 10 public:
 11     Person(int Id,std::string Name);
 12     Person():Person(1,"TOM"){};//委托构造函数
 13     int ID;//公有成员(外部借口);
 14     std::string name;
 15     int names(std::string name);
 16     int ids(){
 17         return 5;
 18     }//内联函数;
 19 private:
 20     int sex, age;  //私有成员;
 21 protected:
 22     int number = 15;    //保护成员;
 23 };
 24 //定义函数原型;
 25 //类的成员函数在类体内定义的时候,为内联函数,需要足够简单
 26 //类外定义的成员函数。
 27 
 28 
 29 //构造函数:
 30 //1、函数名必须与类名相同
 31 //2、不能有返回值
 32 //3、可以有形参,也可以没有形参
 33 //4、可以重载,可以是内联函数
 34 //5、可以带默认参数
 35 
 36 //隐含的构造函数
 37 //未定义构造函数,自动生成一个默认构造函数(自己定义了构造函数,仍然希望编译器定义默认的初始化构造函数时,
 38 //Clock() =default;
 39 //参数为空时,补位数据成员设置初始值
 40 //如果没有定义类内的初始值,以默认方式初始化:基本类型的数据默认初始化的值是不确定的
 41 //一定不能定义返回值类型:错误:void Person::Person(){};,一定不能有void
 42 Person::Person(int Id,std::string Name="leo"){
 43     ID =Id;
 44     name =Name;
 45     std::cout<<"初始化完成\n"<<"id,name"<<ID<<name<<"。\n";  //自己定义的初始化构造函数
 46 }
 47 //Person::Person():ID(10),name("tom") {
 48   //  std::cout << "初始化完成\n" << "id,name" << ID << name << "。\n";  //自己定义的默认初始化构造函数
 49 //}
 50 //委托构造函数,委托构造函数重写上面这个函数
 51 //Person():Person(0,"tom",10){}
 52 int Person::names(std::string name){
 53     name=name;
 54     std::cout<<"他的名字是:"<<name<<"\n";
 55     std::cout<<ID<<"\n"<<sex<<"\n"<<age<<"\n"<<number;
 56 };
 57 
 58 class Clock{
 59 public:
 60     Clock(int,std::string);
 61     Clock(const Clock &C)=delete;//复制构造,delete使编译器不生成默认复制构造函数
 62     int id;
 63     ~Clock();
 64     std::string name;
 65 };
 66 Clock::Clock(int Id,std::string Name){
 67     id =Id;
 68     name =Name;
 69     std::cout<<"初始化完成"<<std::endl;
 70 }
 71 //复制构造
 72 //-------------------------------------------------------------------------------//
 73 /*析构函数*/
 74 //析构函数完成对象被删除前的一些清理工作
 75 //在对象的生存期结束的时候系统自动调用析构函数
 76 Clock::~Clock(){
 77     std::cout<<"析构函数的执行过程..."<<std::endl;
 78 };
 79 //----------------------------------------------------------------------------------'//
 80 /*类的组合*/
 81 //组合类的构造函数
 82 //谁在类体中先定义,谁先进行初始化。
 83 
 84 int main() {
 85     std::cout << "Hello, OPP!" << std::endl;
 86     Person mypersonobject;
 87 //类的实例化;
 88 // 类的属性的更改
 89     mypersonobject.ID=15;
 90     int a = mypersonobject.ids();
 91     int al;
 92     std::cout<<mypersonobject.ID<<"\n"<<a<<"\n"<<"al"<<al;//定义类型,没有赋值的数据是混乱的。例如al
 93     mypersonobject.names("leo");     //调用类的实例的方法
 94     Clock myclock(10,"joe");
 95     Person ab;
 96     Person ba(ab);
 97     std::cout<<"\n"<<ab.ID<<"\n"<<ba.ID<<"\n----------------------------------------------------------_\n"<<std::endl;
 98 
 99     return 0;
100 }
101 
102 //

执行结果

 1 /home/leo/CLionProjects/OPP/cmake-build-debug/OPP
 2 Hello, OPP!
 3 初始化完成
 4 id,name1TOM。
 5 15
 6 5
 7 al0他的名字是:leo
 8 15
 9 882289344
10 32631
11 15初始化完成
12 初始化完成
13 id,name1TOM。
14 
15 1
16 1
17 ----------------------------------------------------------_
18 
19 析构函数的执行过程...
20 
21 Process finished with exit code 0

 

posted on 2018-03-24 23:43  LeoZhao  阅读(265)  评论(0编辑  收藏  举报

导航