C++之类之类的其它特性

Posted ccpang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++之类之类的其它特性相关的知识,希望对你有一定的参考价值。

 

 

 

 一、在类中定义类型别名:

除了在类中定义数据和函数成员以外,类还可以自定义某种类型在类中的别名。类型别名也需要用访问说明符修饰。

  如下所示:

1 class Screen
2 public:
3    //使用类型别名
4    typedef std::string::size_type pos;       
5    //也可以使用别名声明
6   using pos = std::string::size_type;
7

 定义类型的成员必须先定义才能使用,这与普通成员有所区别(原因后面再填坑),所以类型成员通常出现在类开始的地方。

 在类内使用类型别名有什么好处呢? Screen的用户不知道Screen使用了什么类型来存储它的数据,所以通过把pos定义成public成员来隐藏Screen实现的细节。


 二、将成员设置为inline函数

  定义在类内部的函数自动成为inline的(注意是定义!!!)。我们最好在类的外部用inline说明符修饰函数,使它成为内联的。不过也可以在类的内部把inline作为声明的一部分显式的声明成员函数(不推荐)

 


三、可变数据成员(mutable data member)

  有时我们希望修改类的某个数据成员,可以在变量声明前加入mutable关键字。一个可变数据成员永远不可能是const的,即使它是在一个consts对象内。因此一个const成员函数可以修改一个mutable成员的值。任何成员函数包括const函数在内的所有函数都可以修改它的值。

  可变数据成员的作用是什么呢? 比如你让给一个const成员函数传入(const class object)此时你就不能更改class object的值,但是你恰巧需要一个变量是变动的,此时最能满足你的就是mutable data member。

class Screen
public:  
   void some_member() const;
private:
    mutable size_t access_ctr;  //即使在一个const对象内也能够被修改
void Screen::some_member() const

   ++access_ctr; 

 


四、类数据成员的初始值:

  当我们初始化类类型的成员时,需要为构造函数传递一符合成员类型的实参。最好的方式就是把这个默认值声明成一个类内初始值。

如下所示:

1 class Window_mgr
2 private:
3    std::vector<Screen> screensScreen(24,80,  ); 
4 
5 ;

 


 

以上是关于C++之类之类的其它特性的主要内容,如果未能解决你的问题,请参考以下文章

C++面向对象程序设计之类和对象的特性

C++补充篇- C++11 及其它特性

JVM之类文件结构

UE4/5打开其它exe程序

UE4/5打开其它exe程序

UE4/5打开其它exe程序