C++基础知识点总结2

1. .* :? :: sizeof . 这五个运算符不能重载

2.赋值运算符必须要重载成类的成员函数,否则编译失败(只能定义在类内)

原因:赋值运算符重载是默认成员函数,如果用户没有显示实现,则编译器会自动生成一份。

3.赋值运算符加返回值目的:为了实现连续赋值。

返回引用目的:为了提高程序的运行效率(直接将this返回回去,而不是返回临时对象)

如果以自定义类型作为函数的参数,尽量传递应用,因为在传参时,不需要拷贝临时对象。

如果返回的是自定义的对象,最好也以引用的形式返回。

4.const:不想要通过形参修改外部的实参。

  • const类型对象:只能调用const成员函数,不能调用普通成员函数。
  • 普通对象,const成员函数和普通成员函数都可以调用。
  • const成员函数内可以调用其它的非const成员函数吗?答案是不可以,const 修饰成员函数 本质就是在修饰this,表明this指向对象中成员是不能修改的
  • 在普通成员函数中,既可以调用普通成员函数,也可以调用const成员函数。
  • 构造函数、拷贝构造函数、赋值运算符重载、析构函数都不能使用const修饰。
  • const修饰的是一个常量,在编译阶段会进行替换,const修饰的常量在定义时必须初始化或者在初始化列表中对其初始化),除此以外,引用类型的变量也必须初始化

5.重载前置++和后置++:可在重置后置++的时候,多增加1个int形参数。

eg:

    //前置++
    Date& operator++()
    {
        *this = *this + 1;
        return *this;
    }
 
    //后置++
    Date operator++(int)
    {
        Date temp(*this);
        *this = *this + 1;
        return temp;
    }

6.mutable:mutable修饰成员变量,则该成员变量可以在const修饰的函数中被修改。

7.初始化列表

  • 构造函数只是对变量进行了赋值,并不能说是初始化,使用初始化列表对变量进行初始化。
  • 类中包含①const类型的成员变量、②引用类型的成员变量、③类类型对象,且该类的构造函数不是默认的构造函数的时候,必须放在初始化列表位置进行初始化。
  • 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关。
     

8.explicit关键字

构造函数不仅可以构造与初始化对象,对于单个参数的构造函数,还具有类型转换的作用。用explicit修饰构造函数,将会禁止单参构造函数的隐式转换。例如Date d1=2022;(此时编译不会通过,若没有explicit,则2022会通过单参构造函数创建临时对象,将其赋值给d1,然后会将临时对象销毁)。

9.static关键字

静态成员变量的属性:

  • 在类中被static修饰
  • 静态成员变量在类中只是声明,需要在类外重新进行定义,在类外定义时不要加上static,但要加上类名::(eg:   int Date::_count = 0;)
  • 不是具体某对象的属性,没有存储在对象中,是所有类共享的成员变量,肯定不影响sizeof的结果。
  • 静态成员变量可以通过对象.静态成员变量名字|| 类名::静态成员变量名字来访问。
  • 受访问限定符的限制(如果是private,类外就不能用上面两种方式进行访问,较安全,此时可通过提供共有的get方法让类外可以访问  eg:  static int GetCount()---加static可直接通过类名打点的方式来访问)
  • 静态成员变量不能在构造函数初始化列表位置进行初始化。(初始化的都是类内部的)

静态成员函数:

  • 必须要被static修饰
  • 通过类名::静态成员函数名字() || 对象.静态成员函数名字()来访问
  • 静态成员函数没有隐藏的this指针。因此在静态成员函数中不能访问普通成员变量,也不能调用非静态成员函数。(没有this,调用其实需要用this来调)
  • 静态成员函数不能被设置为const成员函数,const修饰成员函数,本质是在修饰this,而静态成员函数中没有this。
  • 静态成员函数不能作为虚函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值