C++总结(与C不同之处)


注:本文根据个人理解,系统梳理了C++知识,主要搭建了框架,却不够完善,日后在学习过程中会进一步完善文章,阅读可能需要一定C++基础,对于大家C++的系统理解应该能有所帮助,文章有许多不当之处,望指正,不胜感激

类与对象关系

1.类是抽象的,对象是从类中抽象出来的

比如:
  一个类叫形状(抽象)
  对象就有圆形,矩形...
   类中有=数据+操作  

在这里插入图片描述

类抽象出对象,类是虚的,对象是实体

class Circle{
  //数据
  private:
      int r;//成员数据
  public:
  //成员函数(操作)
     void Setr(int s);//改变半径
     void Getr();//得到半径
};
//类抽象出对象的操作
Circle a;//对象a
//对象a使用成员函数/数据的操作
a.Setr(10);
//可以这样拆解:
//1.调用函数Setr(10);
//2.调用谁的函数a.Setr(10);
a.Getr();

数据,操作在类/对象中的位置关系:
成员函数中,
成员数据在每个对象
在这里插入图片描述

成员数据

1.const成员
  特殊声明方式:只能用初始化列表初始化
2.static成员
  A类中:static int i;
  类外定义:如:int A::i = 0;
3.引用类型
     一个数据的别名(小名)

成员函数(函数)

1.新增构造函数,析构函数(以A类为例)
  析构函数:~A();
  构造函数:
      普通构造函数:A();
                   A(int i);
      拷贝构造函数:A(const A&);
      //声明的同时赋值用拷贝构造
      //如:A b(a);
      //否则调用拷贝复制运算符 A& operator=(const A &);
      //如:A b;
      //    b = a;
      对于构造函数:
         初始化列表
         Circle(int i) :r(i) { }
         //不允许写了初始化列表却未定义(未写函数体)的行为
         --引用,const成员,类
                需要用初始化列表定义
2.函数重载
  同一个函数名,不同的参数列表,
  函数调用依据参数个数
  来选择调用哪个函数(返回值不同不能进行重载)
  如:int f();
      int f(int i);
      int f(double i);
      int f(int i,double i);
  但是
     int f(int i)
     double f(int i)
     不算是函数重载

3.运算符重载
   重新定义运算符的运算,进行对象与对象间的运算(本质含义不变)
   //此处讲的省略,可以专门搜索详细的博客,
   //主要目的是为了基于个人理解梳理知识脉络,望多多包涵
  主要分为成员函数和非成员函数
  两种情况的return 值和传入形参个数不相同 
4.默认形参
   用于调用函数时少传入参数时,提前为函数形参指定初始值
   只能在声明中指定一次,而不是在定义中
   声明函数:
   void f(int i=0);
   定义函数:
   void f(int i)
   {
      cout<<i<<endl;
   }
   若为调用函数时为
     f()   输出结果 0
     f(8)  输出结果 8
//仍需进一步完善...
5.函数模板
6.虚函数
7.多态

类新增知识

1.作用域解析符: ::
   用于区分类于类之间
 如:
   class A {
    void f();
  };
   class B{
     void f();
  };
    //定义时
  void A::f() //A的f()
  {
    cout<<"A::f()"<<endl;
  }
  void B::f()//B的f()
  {
    cout<<"b::f()"<<endl;
  }
那么:
  std::cout
  既是类std下的cout成员
2.namespace
  如果只想用cout
  则需要加上
    using namespace std;
  否则需要
    std::cout
    std::endl
3.访问限定符:
  public:类中,类外均可使用
  protected:类和派生类可使用
  private:仅类中可用

类与类之间关系

1.友元(朋友关系)
  声明友元即可以代表可以随意访问私有成员
  class A{
    private:
     static int i;
    public:
     friend void f();//告诉A类f()是自己的朋友,可以访问A的私有数据
  };
  int A::i = 0;
  //全局函数
  void f()
  {
     cout<<i<<endl;
  }
2.组合
  将同一类事物组合在一起
  如:两个点可以组合成一条线
    class Point{
     private:
      int x,y;
     public:
      Point(int i,int j) :x(i),y(j) { }
    };
    class Line{
     private:
       Point p1;
       Point p2;
     public:
       Line(int x1,int y1,int x2,int y2) :p1(x1,y1),p2(x2,y2) { }
  };
  三个线可以组合成一个三角形
  class Triangle{
    private:
     Line l1;
     Line l2;
     Line l3;
    public:
      Triangle(int x1,int y1,int x2,int y2,int x3,int y3) 
      :Line(x1,y1,x1,y2),Line(x2,y2,x3,y3),Line(x3,y3,x1,y1) { }
  };
  //仍需进一步完善...
 3.继承 (父子关系)
  从自己的基础上派生出新的做法,减少代码重写

  

C++基础区别于C

头文件

C++C
(1)输入输出流
iostreamstdio.h
coutscanf
cinprintf
(2)动态分配
newmalloc
deletefree
(3)数组
vector(容器)[]
(4)字符串
stringchar

本文仍需完善…

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值