美文网首页
C++类里面一些关于const的知识回顾

C++类里面一些关于const的知识回顾

作者: Mr_Normal | 来源:发表于2018-02-27 16:34 被阅读0次

const member function

在一个类方法的声明后加上关键字const使这个function成为const function.
当调用常函数时,传进去的this指针是const T* this.
关于常函数有以下需要注意:

  • 常函数不能修改对象内容
  • 常函数体内部调用的函数也不能修改对象内容
  • const 对象只能调用常函数
  • 非const对象可以调用非常函数

这些特性不用死记:

  • 之所以加const就是因为这个方法不会(也不能)修改对象,所以如果在此类函数内尝试修改对象,在编译期就会报错
  • const对象是不能修改的,所以他们只能调用常函数。事实上,如果尝试调用const对象里面的非常函数,会有discard qualified error。因为这样相当于将一个const T*类型的指针赋给T*类型的指针,当然是不允许的。
  • 非const对象调用常函数时相当于将T*类型的指针赋值给一个const T* 类型的变量,当然是可以的

复制构造函数参数

当需要自定义赋值构造函数时,其参数常常定义为reference to const,例如:

SomeClass::SomeClass(const SomeClass& another);
  1. 为什么是引用?
    如果不是引用,而是传值,那么传递参数的时候也要调用复制构造函数,那不是陷入和无限的循环中吗?事实上赋值构造函数的定义就是接受一个参数为类对象引用的构造函数。
  2. 为什么是const
    如果没有const,那么就无法根据一个常对象构造一个新的对象,因为一个non-const reference无法引用一个常对象

相关文章

  • C++类里面一些关于const的知识回顾

    const member function 在一个类方法的声明后加上关键字const使这个function成为co...

  • C++常对象-常函数-常成员变量

    C++常对象-常函数-常成员变量 C++常对象 C++常对象, 就是使用const修饰的类实例!const A a...

  • C++中的内联函数

    1、常量与宏回顾 C++中的const常量可以替代宏常数定义,如: const int A = 3; <===>...

  • C++ const用法

    一 修饰类 C++中const修饰类主要包括3个部分:数据成员,成员函数,对象。 数据成员const 修饰类的成员...

  • 三:类内存结构--知识扩展

    上课知识回顾: 证明:对象方法存在类里面,类方法存在元类里面!!!!! 源码分析: class_getInstan...

  • 高质量C++/C编程指南(转)

    1 有如下的c++类 class String { public: String(const char *str ...

  • 2018-01-29

    c++类型转换 去const属性用const_cast。 基本类型转换用static_cast。 多态类之间的类型...

  • C++const_cast

    C++标准转换运算符const_cast 前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针...

  • c++学习笔记第五天

    一、c++中修饰类的const关键字 const 修饰类的成员变量,表示成员常量,不能被修改,同时它只能在初始化列...

  • const修饰的函数与重载

    C++用const修饰函数,即:int get_size() const这样的声明的函数,是表示这个函数不修改类的...

网友评论

      本文标题:C++类里面一些关于const的知识回顾

      本文链接:https://www.haomeiwen.com/subject/gssmxftx.html