C++知识点复习(一)

      千里之行始于足下,打牢基础是非常重要的,在对c和c++的知识学习了一段时间后,有些知识点的概念和特性也

不大熟悉了,所以自己准备将C++的知识点从头到尾仔细的复习一遍,理一理:


(1)C++的三大特点:

       a.   封装:封装可以隐藏实现细节,使得代码模块化。封装是把过程和数据包围起来,对数据的访问只能通过已

义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通

过一个受保护的接口访问其他对象。在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的

数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。


      b.    继承:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些

能进行扩展。其继承的过程,就是从一般到特殊的过程。通过继承创建的新类称为“子类”或“派生类”。被继承的类

称为“基类”、“父类”或“超类”。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。在某些

 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通

过多级继承来实现。


      c.    多态:多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之

后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的

指针赋值给父类类型的指针。


(2)继承的实现方式:

      a.    实现继承:指使用基类的属性和方法而无需额外编码的能力;

      b.    接口继承:指仅使用属性和方法的名称、但是子类必须提供实现的能力;

      c.    可视继承:指子窗体(类)使用基窗体(类)的外观和实现代码的能力;


(3)构造函数:  

      名字和类名相同,没有返回值,也不需要显式调用,在创建对象的时候自动执行,专门用来初始化对象的;


(4)访问权限:

      在类的内部,无论public,protect,private都可以互相访问,没有限制;在类的外部,只能是通过对象访问public

的成员,不能访问private,protected成员;通过类的内部public的函数访问private;


(5)析构函数:

      创造对象时用构造函数初始化;退出的时候用析构函数来退出,进行清理工作;释放分配的内存,关闭打开的文

件。Demo()----构造,~Demo()----析构函数  ;构造函数可以重载,析构函数只能一个,不能重载,析构没有参

数;


(6)const:

      a. 在c++中和#define的作用差不多,在c中修饰的变量不允许改变,但是可以通过指针修改该单元内容,输出的时

候是修改后的内容;在c++中,虽然通过指针修改,但是输出仍然是原来的内容,输出不到内存取值;

      b. c++中const的变量只能在本文件中可用,别的文件报错,而c没有这种限制;


(7)static:

     a.  修饰局部变量:静态局部变量,执行完释放,初始化一次,

     b.  修饰全局变量:只能在本文件中使用;

     c.  修饰函数:只能在本文件使用


(8)this指针:

      指向当前对象,通过它可以访问当前对象的所有成员。当前对象就是正在使用的对象;在类的内部使用,可以访

问所有的成员,public,private,protect。this只能在非静态成员函数内部使用,在其他地方非法;this 只能在对象创

建以后才能使用,否则非法;


(9)static成员变量:

      static变量属于类,只能在类外部初始化;static变量是几个对象共享使用,相当于全局变量;

      外部初始化的格式:

           int Student::m_total = 0;

           类型   类名::static变量 = 数值;

      static 成员的访问形式:

           a. 类名::static变量   :   Student::m_total

           b. 对象.(static 变量)  :   stu.m_total

           c. 对象指针->(static成员变量) : pstr->m_total


(10)static函数:

        没有this指针,只能访问static成员;

        static函数声明时加static,定义的时候不加;


(11)const成员函数:

        可以使用所有的成员,但是不能改变值,声明和定义函数时都要加const;

        const对象只能调用类的const成员 ;


(12)友元函数friend:

       在类外定义的,不属于当前类的函数,可以在当前类中声明,前面加friend,构成友元函数;

 class Address
 {
  public:
        friend class Student;
  };
      

       友员函数可以访问当前类的private成员;

       友元函数不能直接访问类的成员,必须借助对象;

       友员的关系是单向的,不是双向的;

       友员关系不能传递:B是A的友员,C是B 友员, C和A之间不是友员关系;


(13)string类:

        a.  包含头文件 <string>

             string s1;      定义的时候没有初始化,默认是空;

             string s2 = "c  plus";   定义并初始化 c plus ,没有‘\0’;

             string s3 = s2;    定义s3,并把s2赋值给s3;

             string  s4  (3, 's'); 初始化为3个s;

             string 输入时,cin是遇到空格默认结束;

             string成员可以用下标访问;从0开始;
  
        b.  string 中字符串可以使用+, +=进行字符串的拼接;
  

        c.  string插入操作,insert

           原型:  string& insert(size_t pos, const string &str)
  
        d.  string删除操作:erase

           原型:string& erase(size_t pos = 0, size_t length)

           s2.erase(5);把s2第5个元素后面的内容全部删除;

           s3.erase(5, 3);s3中第5个后面3个元素删除
  
        e.  string中substr

          string substr (size_t pos = 0, size_t len = npos) const;

          pos 为要提取的子字符串的起始下标,len 为要提取的子字符串的长度。  

          s2 = s1.substr(3, 10);从第3个开始提取10给s2;
  
        f.  string查找find查找出现的位置:

          其中的两种原型为:

          size_t find (const string& str, size_t pos = 0) const;

          size_t find (const char* s, size_t pos = 0) const;
  

(14)继承的方式:

        a.  public继承:

            基类中public成员在派生类中还是public属性;

            基类中protected成员在派生类中protected属性;

            基类中private在派生类中不能使用;
   
        b.  protected继承

            基类中public成员在派生类中为protected属性;

            基类中protected成员在派生类中为protected属性;

            基类中private在派生类中不能使用;


        c.  private继承

            基类中public成员在派生类中为private属性;

            基类中protected成员在派生类中为private属性;

           基类中private在派生类中不能使用;
   
           在派生类中访问基类的private成员的唯一方法就是借助基类的非private成员函数,如果没有这样的成员函数则

无法访问;


(15)改变访问权限using:

        使用using改变基类成员在派生类中的访问权限;

        如: public改成private,

        存在问题: 在派生类中无法访问基类中private成员,如何用using修改,编译的时候报错;
    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值