首页 > 代码库 > C++特性总结

C++特性总结

static

一个类的静态数据成员是用来表示类的属性的成员而不是对象的属性成员,

需要通过类的名字来访问,加关键字:static  

 

inline

内联函数:在遇到调用内联函数的地方会用函数体中的代码来替换函数的调用

C++中提供了内联的关键字inline ,实现真正的内嵌。

inline 不会有语义上的误差,而且避免了压栈与出栈但是过多使用inline 会造成代码段的空间

 

C++类型转换引入了四种转化形式

静态类型转换  static_cast< 目标类型> ( 标识符)

动态类型转换  dynamic_cast< 目标类型>( 标识符)

重新解释类型转换reinterpret_cast< 目标类型>( 标识符)

常类型转换    const_cast< 目标类型>( 标识符)

 

系统String 类
string 在其封装的里面其实相当于char * ,但可以修改定义的字符串的值

五种类型的初始化

string s= "hfiurgas" ;
string ss( "adfviqrgn" );
string st(s) ;
string str3 = str2;

string *ps= new string ; 

 

struct 只能封装数据,结构体默认数据为public 属性,这种类型的封装不能将数据的操作绑定在一起,只是通过函数来进行封装。

class 将数据和行为打包在一起, 对外屏蔽数据, 提供接口, 对内共享数据,使用方法, class 默认属性是private 。

 

参数初始化列表
优点:效率高,函数还没有压栈出栈之前就初始化了

public :Student ( string sn): name (sn), len (sn.size())

{
}

 

拷贝构造器(Copy contructor)

class A
{
  A( const A & another)            //常引用 const &  

  {}
}

 

深拷贝与浅拷贝

浅拷贝:等位拷贝在没有堆空间的情况下,可以满足需求,如果有堆空间的话,容易造成double free

深拷贝:如果存在堆空间的话,要作特殊处理,即重写拷贝构造。一经重写,系统默认则不再提供。

系统提供的自定义拷贝构造函数是一个浅拷贝过程,若涉及堆上的数据时,会发生多次析构行为, 那么需要自己去定义拷贝构造函数来实现深拷贝, 避免二次释放等问题。

 

运算符重载 =
1. 完成了对象间的赋值操作-
2. 返回类名的引用
类名& operator=(const 类名 & another)

 

内存分为四个区:程序代码区、全局数据区、堆、栈,其中只有堆是留给程序运行时自由支配的

函数参数传递:按值传递、按地址传递、按引用传递

外部变量extern实现文件之间共享

3种类的类型:类、结构、联合

函数定义体在类的外面时需标识符::

 

C++特性总结