ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

#C++#__常用关键字的理解

2021-01-28 09:31:17  阅读:154  来源: 互联网

标签:函数 int 成员 C++ 关键字 static #__ 构造函数


#C++#__常用关键字的理解

综述

全文主要介绍C++中的常用关键字的含义、用法等等,目前介绍内容包括delete、default、new、static、static_cast、typeid,随着应用的增加逐步补充。
对于专门用于修饰函数的关键字,在另一篇帖子中进行说明1

一、delete

C++代码中,一般是类中的默认成员函数,函数声明后面加了=delete; 表示强制取消系统的默认定义。

二、default

C++代码中,一般是类中的默认成员函数,以构造函数为例说明,如果实现了构造函数的自定义版本,则编译器不再自动产生默认形式的构造函数,比如:若定义了带参的构造函数,编译器不会再产生默认的无参构造函数,此时如果在类外调用了无参构造函数,则会报错,这种情况可以通过“default”来显示指示编译器产生默认形式的无参构造函数
如果没有自定义构造函数的实现,编译器会产生默认形式的构造函数;也可以在无参构造函数声明后面加“=default”,显示指示编译器按系统的默认形式定义无参构造函数。(如果使用default来定义带参构造函数,会报错)
例如:类中定义了带参的构造函数后,通过default关键字显示指示编译器产生不带参的构造函数。

class Fusion{
	Fusion() = default;
	~Fusion() = default;
	Fusion(int sensor);
	}

三、new

关键字new是用于在程序运行时中为变量临时分配内存的C++关键字。
使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。
经常使用new来创建类对象,对象一般是指向类的指针。2

#include <stdio.h>
class Test {
public:
	Test(){};
    void print(){printf("Base Test print\n");}
};

int main() {
    Test *test = new Test();  // create object
    test->print();

    delete test;
    return 0;
}

结果:Base Test print

四、static

  1. 作用于函数内部的局部变量
    局部作用域静态变量的特点:当一个函数返回后,下一次再调用时,该变量还会保持上一回的值,函数内部的静态变量只开辟一次空间,且不会因为多次调用产生副本,也不会因为函数返回而失效。3

  2. 作用于类的成员
    用于解决同一个类的不同对象之间数据和函数共享问题。
    (1)作用于类的数据成员,使其成为静态数据成员
    静态成员在每一个类中只有一个副本,由该类所有对象共同维护和使用,从而实现同一个类的不同对象数据共享。需要注意的是:
    访问静态数据成员方式:类名::标识符
    对静态数据成员初始化:在类定义外进行,类内定义只能进行声明
    (2)作用于类的函数成员,使其成为静态函数成员
    静态成员函数就是使用static关键字声明的函数成员,同静态数据成员一样,静态成员函数也属于整个类,由该类所有对象共同拥有,为所有对象共享。
    1)静态成员函数主要用于处理该类的静态数据成员,可以直接调用静态数据成员。如果访问非静态成员,要通过对象来访问。
    2)类外代码一般使用类名和作用域操作符来调用静态成员函数。
    访问方式:类名::函数名,或“类.函数名”

注意: 具体代码示例见参考博客。

六、static_cast

  1. 调用形式:
static_cast < type-id > ( expression ) 
  1. 作用:
    该运算符把 expression 转换为 type-id 类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
    ① 用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。
    ② 用于基本数据类型之间的转换,如把 int 转换成 char,把 int 转换成 enum。这种转换的安全性也要开发人员来保证。
    ③ 把空指针转换成目标类型的空指针。
    ④ 把任何类型的表达式转换成void类?
    注意 static_cast 不能转换掉 expression 的 const、volitale、或者 __unaligned 属性。4

七、typeid

1. 头文件

#include <typeinfo>

2. 作用

返回变量的数据类型
调用方式:
typeid(par).name()

返回值和编译器等有关系,部分如下所示:5

bool:                     b
 
char:                     c
signed char:              a
unsigned char:            h
 
(signed) short (int):     s
unsigned short (int):     t
 
(signed) (int):           i
unsigned (int):           j
 
(signed) long (int):      l
unsigned long (int):      m
 
(signed) long long (int): x
unsigned long long (int): y
 
float:                    f
double:                   d
long double:              e

pointer:                  P

3. 用法示例

八、

1. 头文件

2. 作用

3. 用法示例


  1. #C++#__默认函数功能与使用说明&&修饰函数的关键字 ↩︎

  2. c++ new关键字的用法 ↩︎

  3. C++中的static的作用 ↩︎

  4. c++的关键字即保留字小结 ↩︎

  5. C++ 查看变量数据类型之 typeid().name() ↩︎

标签:函数,int,成员,C++,关键字,static,#__,构造函数
来源: https://blog.csdn.net/sinat_37231928/article/details/110394776

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有