第三十七篇,C++中函数带默认参数,类和对象的定义,C++中的字符串string详解。

第三十七篇,C++中函数带默认参数,类和对象的定义,C++中的字符串string详解。,第1张

C++标准
======================================
   1.C++标准
        1998年 --》C++语言规范
        2011年 --》C++新的语法
        2014年 --》C++新的语法
        2017年 --》C++新的语法
     如果你的编译器g++,版本太低,有可能新的语法不支持

函数带默认参数
======================================
   1.概念
         C++允许定义函数的时候,给函数的形参设置默认值
         比如:show_anybmp(int w,int h,int x,int y,const char *bmppath)
               show_anybmp(int w,int h,int x=0,int y=0,const char *bmppath="1.bmp")
     好处/优势
         程序员调用这种函数的时候,灵活性很强
         如果程序员传递了新参数--》就使用新参数
         如果程序员没有传递参数--》就使用默认参数
         默认参数,程序员可传可不传,自己掌握主动权

   2.语法规则
            函数名(形参1,形参2=默认值,形参3=默认值)
     第一:函数带默认参数,定义这个函数的时候默认值只能是从右到左连续默认,中间不可以间断
     第二:函数带默认参数,程序员调用该函数的时候,传递实参只能从左到右连续传递,中间不可以间断


类和对象
======================================
   1.面向对象编程的三大基本思想(C++  java)
          类的封装(自定义了类)
          继承
          多态

   2.类和对象
        类的思想:日常生活中随处可见
                  动物--》 哺乳
                           两栖
                           行为动作:跑,吃,跳
                           属性信息:耳朵,颜色
                  电脑--》笔记本
                          台式机
                  飞机--》大型客机
                          中型客机
                          小型客机
        (1)定义类
             class 类的名字 //类名建议你首字符大写
             {
                类的成员
             };
           类中的成员
               分为两大类:成员属性(成员数据/成员变量) --》描述类具有的参数信息
                           成员函数(成员方法) --》描述类具有的功能
        (2)使用类
             定义了一个类,相当于程序员发明了一种新的数据类型
             类就是一种数据类型,跟当年你定义结构体一样的道理 
             语法规则:
                 数据类型         变量名
                  int              a;
                  double           b;
                  Animal           c;   //定义了    Animal类型的变量,变量名叫做c
                                        //定义了Animal类的一个对象,对象名叫做c
                  struct student   stu;
            什么是对象
                  对象指的是你使用类名定义的那个变量,C++把它称之为对象(把变量换了一个称呼)
            如何使用类中的成员方法/成员属性
                  需要定义对象,通过对象去访问类中的成员
        (3)类中成员的权限
              C++规定:类中的成员有三种权限,分别是公有(public)  私有(private)  保护(protected)
              权限的作用:限制外界对于这个类中成员的访问
                         保护类中的成员数据
              权限修饰符:  
                  public: 类中的成员可以通过对象在外部访问
                  private:类中的成员不可以通过对象在外部访问
                  protected:类中的成员不可以通过对象在外部访问
                      private和protected区别:
                             体现在继承的时候,子类可以使用父类的保护成员,但是子类不能使用父类的私有成员
                             保护:对外隐藏,对子类不隐藏
                             私有:到处隐藏
                             公有:谁都可以用
           注意:定义一个类,如果没有使用任何权限修饰符,那么默认都是私有的(private)
                 一般来说,成员方法我们定义成公有的(方法提供接口给外面使用)
                           成员属性我们定义成私有的(数据对外隐藏,不给别人轻易使用)
        (4)对象调用成员方法/成员属性
               写法一:定义了普通对象--》栈空间
                        Animal a;
                        a.eat();  //通过小数点
               写法二:定义了对象指针--》堆空间
                        int *a=new int;
                        Animal *p=new Animal;
                        p->eat();

   3.成员函数的两种写法
        写法一:成员函数定义在类的内部
        写法二:成员函数定义在类的外部
              void Computer::opencomputer()
              {
             cout<<"电脑开机"<               }
              ::叫做类作用域运算符,告诉编译器这个函数是属于Computer这个类的成员函数
        注意:如果成员函数的源码特别长--》建议你写在类的外部

   4.getxxx和setxxx成员方法去获取/设置成员属性
        思路:由于成员属性一般设置成私有的,不能通过对象直接访问
              定义成员方法间接去访问成员属性

   5.类的大小
         类的大小计算规则跟结构体计算规则一模一样
         类的大小:只计算成员变量的大小,成员函数不用计算

   6.this指针
         类定义引用跟基本数据类型写法一致的
            int a=99;
            int &b=a;
            Animal a;
            Animal &b=a;
         this指针:专门用来指向当前对象地址的一个指针,当前对象是谁,该指针就指向谁

   7.重新认识cout和cin
          cout本质是ostream类的对象
          cin本质是istream类的对象
          ostream类和istream类都是在系统头文件中定义的
          namespace std
          {
               ostream  cout;
               istream  cin; 
          }
          cout.成员方法();
          cin.成员方法();
     查看C++的在线函数接口文档
          www.cplusplus.com


C++中的字符串string(很重要,使用频率很高)
======================================
  1.C++表示字符串的手段方法
      方法一:用char类型数组
      方法二:用char类型指针
      方法三:推荐使用string类表示字符串
              class string  //C++系统自带的
              {
               public:
                    大量公有的方法,帮助程序员处理字符串的各种 *** 作
              };
    string优势
          第一:不必担心字符串长度的问题
          第二:大量好用的方法辅助你写代码

  2.string中的重要方法
        assign
        at
        back
        clear
        compare  //天坑
           //注意:参数表示从str4下标0开始,连续5个字符,去跟str1比较 
           if(str4.compare(0,5,str1)==0)
        copy
        c_str
        erase
        find
        insert
        length
        pop_back
        push_back
        replace
            str1.replace(0,2,str3);  //用str3整个字符串替换str1(从0开始2字节的内容)
        size
        substr

   3.遇到的问题
        问题一:error: ‘std::__cxx11::string {aka class std::__cxx11::basic_string}’ has no member named ‘back’
                原因:back函数是c++11新增的
                解决方法:  g++ string的常用方法.cpp   -std=c++11  
                            -std=c++11 表示采用c++11新标准语法去编译程序

        问题二:中文字符串,取单个字符乱码
                原因:汉字每一个最少都是两个字节

     
                        
练习
======================================
   1.定义一个含有四个形参的函数,然后给默认值,体会函数带默认参数的两条规则
         showbmp(int w,int h,int x,int y)
         {

         } 
   2.定义Cat类,里面包含了成员方法和成员属性
   3.定义矩形类
       要求可以计算矩形的周长,面积
       属性:宽,高
     定义Bmp类
       要求可以显示任意大小的bmp
       属性:???


作业
======================================
   1.定义一个时间类  class Time
        要求:可以设置时间,时分秒
              可以打印时间,时分秒
        
   2.定义一个银行账户类 class Bankcount
        要求:可以设置户主名字,设置账户余额
              有存钱的方法
              有取钱的方法
              可以打印账户信息
  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/792822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存