zoukankan      html  css  js  c++  java
  • 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<<"初始化完成
    "<<"id,name"<<ID<<name<<"";  //自己定义的初始化构造函数
     46 }
     47 //Person::Person():ID(10),name("tom") {
     48   //  std::cout << "初始化完成
    " << "id,name" << ID << name << "。
    ";  //自己定义的默认初始化构造函数
     49 //}
     50 //委托构造函数,委托构造函数重写上面这个函数
     51 //Person():Person(0,"tom",10){}
     52 int Person::names(std::string name){
     53     name=name;
     54     std::cout<<"他的名字是:"<<name<<"
    ";
     55     std::cout<<ID<<"
    "<<sex<<"
    "<<age<<"
    "<<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<<"
    "<<a<<"
    "<<"al"<<al;//定义类型,没有赋值的数据是混乱的。例如al
     93     mypersonobject.names("leo");     //调用类的实例的方法
     94     Clock myclock(10,"joe");
     95     Person ab;
     96     Person ba(ab);
     97     std::cout<<"
    "<<ab.ID<<"
    "<<ba.ID<<"
    ----------------------------------------------------------_
    "<<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
  • 相关阅读:
    Serverless 工程实践 | Serverless 应用开发观念的转变
    如何高效学习 Kubernetes 知识图谱?
    互动赠新书|当云原生遇到混合云:如何实现“求变”与“求稳”的平衡
    5 款阿里常用代码检测工具,免费用!
    AI与传统编译器
    OpenArkCompiler方舟编译
    传统编译原理
    LLVM基础技术图例
    双极型与低频大功率晶体管
    TVM,Relay,Pass
  • 原文地址:https://www.cnblogs.com/BlogOfMr-Leo/p/8642087.html
Copyright © 2011-2022 走看看