首页 > 编程语言 >C++修饰符类型

C++修饰符类型

时间:2023-11-08 11:55:57浏览次数:37  
标签:const 变量 int void 修饰符 C++ restrict 类型

1、static

  静态存储修饰符:

  作用于变量时,使变量只被初始化一次,并且变量生命周期延长至和当前进程一致。

  作用于函数时,时函数只在当前文件中可见,调用权限只在当前文件。

 

2、const

  常量类型修饰符:

  作用于变量时,使该变量不可被更改。

const int value = 0;

  

  作用于函数的指针类型形参时,使该指针指向的内容不可被更改。

int FunTion(const int *value);

 

  作用于类的成员函数时,使该函数不能修改类的成员变量。

class Base {
  private:
    string name;
    int age;

  private:
    void MyPrint()const;
};

 

3、mutable

  可变对象修饰符:

  作用于类内成员变量时,可以让带有const修饰的函数修改该成员变量。

class Base {
  private:
    string name;
    int age;
    mutable int printTimes;
  private:
    void MyPrint()const;
};

 

4、restrict

  限制访问修饰符:

  作用于某块内存的指针时,限制这块内存只能通过该指针访问;

char * restrict name = (char *)malloc(256);

  例如memcpy可能出现内存重叠问题,例如s1访问长度过长已经达到了s2所指向的内存区域,可能出现问题。

  若没有restrict就不会有这个限制。

void * memcpy(void * restrict s1, const void * restrict s2, size_t n);
void * memmove(void * s1, const void * s2, size_t n);

 

5、volatile

  易变变量修饰符

  作用于变量时,使变量不会被编译优化(相当于告诉编译器此变量可能会被其他的外部因素改变,如硬件或其他线程)

volatile int num = 20; 

 

6、register

  寄存器变量修饰符

  作用于变量时,期望编译后会吧把该变量放在CPU的寄存器中,以便频繁调用节省时间开销。

void example_function(register int num) {
    // register 关键字建议编译器将变量 num 存储在寄存器中
    // 以提高程序执行速度
    // 但是实际上是否会存储在寄存器中由编译器决定
}

 

标签:const,变量,int,void,修饰符,C++,restrict,类型
From: https://www.cnblogs.com/GREEN-FIEID/p/17816957.html

相关文章

  • Net 高级调试之六:对象检查之值类型、应用类型、数组和异常的转储
    一、简介今天是《Net高级调试》的第六篇文章。记得我刚接触Net框架的时候,还是挺有信心的,对所谓的值类型和引用类型也能说出自己的见解,毕竟,自己一直在努力。当然这些见解都是书本上的,并没有做到眼见为实,所以总是有些东西说不清楚。今天,我们就好好的说说C#的类型,是从......
  • C#C++,opencv的dll中detach相关:关于调用dll后程序退出后进程仍然驻留系统列表的问题
    我在c#中调用C++的dll,内部使用了线程并detach使其独立于主线程UI运行。但后来发现程序关闭后,任务列表中的进场依然存在,即app并未实际正常退出。这个问题有很多人碰到和争论,但都没有给出明确的答案。这里提供一个理论解释和绝佳的调试排除方法:根本原因:程序退出之前,系统(或程序员......
  • windows 环境下dev c++安装第三方库
    参考资料https://blog.csdn.net/u011342183/article/details/79823564测试下载第三方库开发文件安装到devc++设置路径选择工具->编译器选项然后导入include路径......
  • C++全部操作符优先级整理
    优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a+b)/4;array[4]=2;ptr->age=34;obj.age=34;Class::......
  • 以含临时表的存储过程创建类型化数据集时报错
    I'vebeenstrugglingforthepastcouplemonthstousetheVisualStudioXSDtooltocreatetypeddatasetsfrommystoredprocedures. ButIalwaysgetanerrortellingmethetemptableisaninvalidobjectname. I'vejustdiscoveredthattemp......
  • Java学习—Java修饰符
    Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符1、访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。default (即默认,什么也不写):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、......
  • @RequestBody接收Json参数 用自定义注解对Vo对象中Date类型日期格式校验
    @RequestBody接收Json参数|用自定义注解对Vo对象中Date类型日期格式校验问题描述昨天测试的同事测试接口的时候,测试出来一个Date类型校验问题。要求输入的日期格式是:yyyy-MM-ddHH:mm:ss,Vo中使用的注解如下:@DateTimeFormat(pattern=”yyyy-MM-ddHH:mm:ss”)测试同事输入下面两种......
  • C++基础随笔记录
    函数-值传递函数调用时,实参传递给形参。值传递时,形参改变,不会改变实参函数-4种形式无参无返有参无返无参有返有参有返函数-声明作用:告诉编译器函数名称以及如何调用函数。函数的主体可以单独定义。函数可以多次被声明,但是函数的定义只有一......
  • vue-test --------事件修饰符
    <template><h3>事件修饰符</h3><a@click="clickHandle"href="www.baidu.com">百度</a><div@click="clickDiv"><p@click="clickP">测试冒泡</p></div></template&......
  • C++ 容器之 Vector
    什么是Vector?向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。容器特性顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序......