关于C++疑惑和解答

在学习中遇到很多不会的,虽然解答了问题,但是同时自己产生了新的疑问。本就是来记录自己一些不会的东西

“::”和’:’的区别

一、”::”

  1. 类作用域操作符。“::”指明了成员函数所属的类。如:M::f(s)就表示f(s)是类M的成员函数。
  2. 表示“域操作符”。在类定义外,void A::f(),表示f()是类A的成员函数
  3. 表示引用成员函数及其变量,作用域成员运算符。System::Math::Sqrt() 相当于System.Math.Sqrt()
    二、’:’
  4. 表示结构内位域的定义(即该变量占几个bit空间)
  5. 构造函数后加冒号表示初始化表达式。例:iStack( int capacity ) : _stack( capacity ), _top( 0 ) { } //冒号后面的内容是初始化类的数据成员 _top;_stack;
  6. public:和private:后面的冒号,表示后面定义的所有成员都是公有或者私有的。
  7. 类名冒号后面的是用来定义类的继承

时间复杂度和空间复杂度

时间复杂度:时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数

空间复杂度:是对一个算法在运行过程中临时占用存储空间大小的量度

class和typename的区别

  • 在模板定义语法中关键字class与typename的作用完全一样
  • typename可以表示一个嵌套依赖类型名,但是在基类列表和成员初始化列表时,可以不用typename;这个时候typename的作用就是告诉C++编译器,typename后面的时一个类型名称,而不是成员函数或者成员变量

    子类和父类名称

  • 继承创建的新类称为“子类”或“派生类”,被继承的类成为“基类”,“父类”或“超类”。

define宏定义的优点和缺点

优点

  1. 方便程序的修改
  2. 提高程序的运行效率:使用带参数的宏定义可以完成函数调用的功能,又能减少系统开销,提高运行效率。

    缺点

  3. 无法对宏定义中变量进行类型检查
  4. 未加括号带来的边界效应