首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这个操作符 C++ 是什么意思

问题 我 Google Groups 论坛 comp.lang.c++.moderated 上看到一个回答 Hidden Features and Dark Corners of C++/STL ,他贴那段代码...,这个操作符(operator)-->没看懂是啥意思,我试了一下, Visual Studio 2008、G++ 4.4 和 gcc 上都可以编译通过,下面是代码: #include <stdio.h...) { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 谁能解释下这个操作符到底是什么意思...在上面那段代码,因为--是后自减,所以执行顺序就是:先x > 0,然后x--。...说白了,上面的代码就等同于, while( (x--) > 0 ) 其实如果你把代码拷贝到 Visual Studio 上,这个问题很快就可以解决,因为代码会自动格式化为while (x-- > 0)。

1.9K20

void及void指针含义深刻解析

综述 很多刚開始学习的人对C/C++语言中void及void指针类型不甚理解,因此使用上出现了一些错误。...[Page] 规则二假设函数无參数,那么应声明其參数为 void    C++ 语言中声明一个这种函数: int function(void) { return1; }   则进行以下调用是不合法...: function(2);   由于 C++ ,函数參数为 void 意思这个函数不接受不论什么參数。...; }   编译正确且输出 1 ,这说明, C 语言中,能够给无參数函数传送随意类型參数,可是 C++ 编译器编译相同代码则会出错。...和memset,这也真实地体现了内存操作函数意义,由于它操作对象仅仅是一片内存,而不论这片内存是什么类型。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

第 19 章 特殊工具与技术

与之相反,限定作用域枚举类型,枚举成员作用域与枚举类型本身作用域相同。... C++11新标准可以提前声明 enum,前置声明必须指定其成员潜在类型。...因为不限定作用域 enum未指定成员默认潜在类型,因此每个声明必须指定成员类型;而对于限定作用域 enum来说,可以不指定其成员类型,这个值被隐式地定义成 int。...// 未初始化 Token对象 Token *pt = new Token; // 指向一个未初始化 Token对象指针 匿名 union是一个未命名 union,并且右花括号和分号之间没有任何声明...,当一个#include指示被放置复合链接指示花括号时,头文件所有普通函数声明都被认为是由链接指示语言编写

72440

第 19 章 特殊工具与技术

与之相反,限定作用域枚举类型,枚举成员作用域与枚举类型本身作用域相同。... C++11新标准可以提前声明 enum,前置声明必须指定其成员潜在类型。...因为不限定作用域 enum未指定成员默认潜在类型,因此每个声明必须指定成员类型;而对于限定作用域 enum来说,可以不指定其成员类型,这个值被隐式地定义成 int。...// 未初始化 Token对象 Token *pt = new Token; // 指向一个未初始化 Token对象指针 匿名 union是一个未命名 union,并且右花括号和分号之间没有任何声明...,当一个#include指示被放置复合链接指示花括号时,头文件所有普通函数声明都被认为是由链接指示语言编写

80550

深入理解 Java 泛型

Java泛型 Java 泛型实现与 C++ 不同,Java 中一个泛型类只会产生一份目标代码,而 C++ 则会根据具体参数实例产生多份目标代码,是什么意思呢?...这里需要提一点编译器进行类型检查时是以我们声明类型为基础依赖去检查而不是具体创建类型,什么意思呢?...,变量声明是什么类型就用这个类型去调用泛型方法,就会对这个调用方法进行类型检测,而无关它真正引用对象。...super Apple> ,它表示某种类型 List,这个类型是 Apple 基类型。也就是说,我们不知道实际类型是什么,但是这个类型肯定是 Apple 父类型。...,Kotlin 相对于 Java 通配符提出了一种新定义:声明处型变(declaration-site variance)与类型投影(type projections) 这两种都是型变,不过一个是声明

55320

C语言中void具体有什么作用

大家好,又见面了,我是你们朋友全栈君。1.概述 许多初学者对C/C++语言中void及void指针类型不甚理解,因此使用上出现了一些错误。...3.void使用 下面给出void关键字使用规则: 规则一 如果函数没有返回值,那么应声明为void类型 C语言中,凡不加返回值类型限定函数,就会被编译器作为返回整型值处理...: function(2); 因为C++,函数参数为void意思这个函数不接受任何参数。...); getchar(); } 编译正确且输出1,这说明,C语言中,可以给无参数函数传送任意类型参数,但是C++编译器编译同样代码则会出错。...memcpy和memset,这也真实地体现了内存操作函数意义,因为它操作对象仅仅是一片内存,而不 论这片内存是什么类型。

1.7K20

C++の自动类型推导和其他

,基本都放在第一章节讲解,而且很多语言是相通,但是C++有一个比较强大关键字auto,我觉得有必要强调一下。 其实,我们可以根据这个意思差不多猜出这个关键字功能 —— 自动类型推导。...也许C语言或Java,确实,变量类型清晰可见,但是C++就不一样了。...这里是实现一个遍历功能,将batch_id存到pred_box。我们定义了一个迭代器pred_box,这里由于auto会自动推导其类型,我们几乎什么都不用管。但是实际上它类型是什么呢?...constexpr作为限定含义上与const并不相同,constexpr是为了初始化一个变量时,让编译器判断这个变量值是否是一个常量或常量表达式,如果该变量用constexpr限定,但是初始化值并不是一个常量或者常量表达式...所以C++11标准推荐我们使用nullptr,这个关键字本身就是代表空指针,更加合适,所以下次如果你们C++初始化一个指针变量时,就用名副其实nullptr吧。

64410

C++初阶】类和对象修炼上

+兼容C语法,所以也是支持struct Stack来定义对象,同时C++还支持直接使用Stack定义变量 函数如果被定义,编译器就会默认把这个成员函数定义为内联函数 4.访问限定符...ps: 访问限定符限制是域外面能不能访问,类里面,只要是共有的,无论是成员变量还是成员函数,都可以访问. 5.声明和定义分离 先来看一个问题:下图语法错误原因是什么?...ps: 声明和定义分离:方便浏览类结构 域作用限定限定:防止命名冲突 缺省值声明和定义只声明写 6.封装 C++三大特性:封装,继承,多态 但是C++并不只是有这几个特性,毕竟四大名著实际上有很多名著...0,这里为了避免空类实例化出来了对象,对象取地址时出现都为空,(在内存没有开辟空间却定义出了变量尴尬问题),所以C++编译器给空类和空类实例化出对象都给与了一个字节空间大小. 9.隐含this...到了这里我们来看看两个问题: 问题1: 第五点问题我们进行变式,(这里成员函数明明是定义好了),那么导致下面图片语法错误原因是什么?

66740

CC++void用法总结

void使用 下面给出void关键字一些使用规则。 规则一:如果函数没有返回值,那么应声明为void类型。 C语言中,凡不加返回值类型限定函数,就会被编译器作为返回整型值处理。...C++语言中声明一个这样函数: int function(void) { return 1; } 则进行下面的调用是不合法: function(2); 因为C++...,函数参数为void意思这个函数不接受任何参数。...getchar(); } 编译正确且输出1,这说明,C语言中,可以给无参数函数传送任意类型参数,但是C++编译器编译同样代码则会出错。...下面代码都企图让void代表一个真实变量,因此都是错误代码: void a; //错误 function(void a); //错误 void体现了一种抽象,这个世界上变量都是“有类型

3.1K10

C++C++基础语法

在学习C++之前,或者说任意一门语言时候,我们都要了解并学习它不同于其他语言语法知识,这些有利于我们后期学习,也对开始学习C++有非常重要作用,接下来让我们开始这段旅程吧!...namespace +命名空间名字 {     // 命名空间中可以定义变量  /  函数  /  类型     //...... ;   } 这是什么意思呢?...使用时,会反反复复去写域作用限定符,所以为了避免重复,c++就新出现 using namespace std;什么意思呢??...缺省参数不能在函数声明和定义同时出现 .h,void Func(int a=10) ; .cpp,void Func(int a=100) {;} 若出现声明和定义中都有...首先当然不是,内联针对是,代码少,但是需要经常调用,而且,你加了内联,只是像编译器说明,发出一个请求,具体编译器要不要展开,人家自己考虑,可以忽略你这个请求!

1.3K20

終於弄明白C++關鍵字了(1)

共用体变量起作用成员是最后一个存放成员,存入一个新成员后,原有的成员就失去作用。...你调用foo(),无论调用几次,他们结果都是一样。也就是说本文件内调用他们是完全相同 //那么他们区别是什么呢?文件隔离!...而静态数据成员被当作是类成员,由该类型所有对象共享访问,对该类多个对象来说,静态数据成员只分配一次内存。静态数据成员存储全局数据区。静态数据成员定义时要分配空间,所以不能在类声明定义。...c/c++ ,为了解决一些频繁调用小函数大量消耗栈空间(栈内存)问题,特别的引入了 inline 修饰符,表示为内联函数。...如果不是每个文件里定义都一样,那么,编译器展开是哪一个,那要看具体编译器而定。所以,最好将内联函数定义放在头文件

26610

《C++Primer》第十九章

是否位于t2之前,顺序关系依赖于编译器 type_info类没有默认构造函数,而且它拷贝和移动构造函数以及赋值运算符都被定义为删除。...枚举类型 C++包含两种枚举:限定作用域和不限定作用域C++新标准引入了限定作用域枚举类型。...,因此之前对于pdata使用必须位于Screen类成员或友元内部,否则程序将发生错误。...局部类成员必须完整定义内部,所以成员函数复杂性不能太高,一般只有几行代码 局部类不允许声明静态数据成员 1....3.1 声明一个非C++函数 // cstring头文件C函数声明 // 单语句链接指示 extern "C" size_t strlen(const char *); // 复合语句链接指示 extern

1.3K10

const关键字到底该什么用

前言 我们都知道使用const关键字限定一个变量为只读,但它是真正意义上只读吗?实际又该如何使用const关键字?解答这些问题之前,我们需要先理解const关键字基本使用。...本文说明Cconst关键字,不包括C++。 基本介绍 const是constant简写,是不变意思。但并不是说它修饰常量,而是说它限定一个变量为只读。...如果确定传入指针参数仅用于访问数据,那么应该将其声明为一个指向const限定类型指针,避免函数内部对数据进行意外地修改。...第一种,a文件定义,其他文件中使用外部声明,例如: a.h //a.h const int ARR[] = {0,1,2,3,4,5,6,7,8,9}; //定义int数组 b.c //b.c extern...但是我们要知道是,const关键字告诉了编译器,它修饰变量不能被改变,如果代码中发现有类似改变该变量操作,那么编译器就会捕捉这个错误。 那么它在实际意义之一是什么呢?

56520

面试官:五问注解你怕了吗?

注解是什么 首先,我们先来康康注解百度百科上解释 ?...@Target正如它名字那样,它是用于限定这个自定义注解能够应用 Java 元素,在这个注解维护着一个枚举类: public enum ElementType { /** 类,接口(包括注解类型...意思就说,我们不管是自定义注解也好,JDK中原生注解也好,都是继承自Annotation这个接口,也就是说我们上面自定义注解经过了编译器编译后,大概是这个样子 @Document @Inherited...去看一下 我们使用系统时候,通常会有权限控制,项目中,我们会在 gateway 中去设置过滤器,通过过滤请求之中token,获取对应用户信息,从而拿到用户权限,完成对权限控制,但是有一些接口是处于非登录状态...(即没有token时候)也需要去访问,而这些接口并非固定一成不变这个时候,我们就需要一个标志,也就是注解去注明,哪些接口访问是无需进行权限,相当于颁发了一个绿牌,可以跳过权限控制。

38730

初识Rust

其他语言interface,Rust叫trait。不过这个C++也叫trait而且它和C++类似都有编译期推断所以还勉强说过去。但是别人叫package Rust叫crate是什么鬼?...本来我觉得golang函数声明关键字是 func 已经很偷懒了。结果Rust这货更短,是 fn 。之前看到一个文章是说啥来着现在完全没必要使用缩写。...并且多线程编程地时候,可以放心地认为这个对象不会在奇怪地地方被修改,也就不容易出现线程安全问题。 神一样枚举类型和模式匹配机制 Rust枚举类型也很有意思。...然后这个解引用语法糖和上面的范围限制语法糖结合,还有个新语法糖:(用 @ 符号限定范围) enum Message { Hello { id: i32 }, } let msg = Message...生命周期和转移语义 在看Rust文档过程,看得出来Rust设计哲学是尽可能地无运行时开销并在编译期发现更多地错误。并且要求你关注失败和避免意料之外地开销。

65940

【C→C++】打开C++世界大门

有的: 确实打印出来了,那那两个冒号是什么东西啊,为什么a前面加了这个符号就打印全局a了? ,::叫做 作用域限定符。...注意:早期标准库将所有功能在全局域中实现,声明.h后缀头文件,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器...那C++引入了缺省参数,是什么呢? 缺省参数是声明或定义函数时为函数参数指定一个缺省值(默认值)。 调用该函数时,如果没有指定实参则采用该形参缺省值,否则使用指定实参。...指针空值nullptr(C++11) 良好C/C++编程习惯声明一个变量时最好给该变量一个合适初始值,否则可能会出现不可预料错误,比如未初始化指针。...NULL实际是一个宏,传统C头文件(stddef.h),可以看到如下代码: 意思呢就是C++NULL其实就是0。

14110

C++面试题,阿里、百度、腾讯、华为、小米100道C++面试题目及答案

为了使这种行为可行,我们把基类Shape函数Draw()声明为虚函数,然后派生类重新定义Draw()使之绘制正确形状,这种方法叫覆盖,虚函数声明方法是基类函数原型之前加上关键之virtual...5、C++ 程序调用被 C 编译器编译后函数,为什么要加 extern “C”声明?...Add@@YAHHH@Z)函数,但是test.c文件这个Add函数被编译器重命名为_Add,由于.cpp文件中和.c文件同一个函数名被编译器重命名后名字不一样;所以.cpp文件声明外部函数找不到真正定义地方...16、C++程序调用被C编译器编译后函数,为什么要加extern“C”声明?...四、【华为C++面试题】 1、C++程序调用被C编译器编译后函数,为什么要加extern“C”声明

1.7K20

C++】类和对象(上篇)

引入 C语言结构体只能定义成员变量,C++,结构体内不仅可以定义成员变量,也可以定义成员函数。...比如:之前在数据结构,用C语言方式实现栈,结构体只能定义成员变量;现在以C++方式实现,会发现 struct 也可以定义成员函数,例如以下代码: struct Stack { //...类定义 但是实际上 C++ 更喜欢用 class 来代替 struct,class为定义类关键字,类体内容称为类成员:类变量称为类属性或成员变量; 类函数称为类方法或者成员函数。...类两种定义方式: 声明和定义全部放在类体,需注意:成员函数如果在类定义,编译器可能会将其当成内联函数处理。...C++通过引入 this 指针解决该问题,即:C++ 编译器给每个“非静态成员函数“增加了一个隐藏指针参数,让该指针指向当前对象(函数运行时调用该函数对象),函数体中所有“成员变量”操作,都是通过该指针去访问

10010

C++修炼之路】1. 初窥门径

采用C++编译器编译后结果 结论:linux下,采用g++编译完成后,函数名字修饰发生改变,编译器将函数参数类型信息添加到修改后名字。...接下来看看有趣事情: 我们知道这样操作是错误,但是发现,销毁之后,仍然是这个值,这就是因为Count()调用之前没有调用别的函数或者没有操作别的变量,也就是相当于后续没有客人居住,也就代表着退房后落下这个房间东西并没有消失...此外,我们也发现,上述红色框处Note,这个具体意思是对于内联来说,如果出现了我们上述叙述情况,即代码膨胀情况,编译器将会拒绝这个请求,也就是不按照内联函数展开,而是像原本一样利用函数栈帧,生成符号表...对于这个问题,上述已经提到过内联之后,函数由于不建立栈帧因此不会产生地址,链接时候声明与此函数定义符号表地址也不会合并,通过之前文章:程序编译和链接,我们知道最后链接过程,函数定义地址和函数声明地址符号表中最后会合并成定义地址...指针空值nullptr(C++11) 9.1 C++98指针空值 良好C/C++编程习惯声明一个变量时最好给该变量一个合适初始值,否则可能会出现不可预料错误,比如未初始化指针。

99300

C++C++基本知识点盘点(1)

主要内容如下啦~ 目录 一.缺省函数 二.命名空间域 三.访问限定符(C++实现封装方式) 四. C++NULL与空指针区别 五.函数重载 六....注意事项: 只有参数后部参数才是可以缺省,即缺省函数参数后不可以再跟正常参数 缺省函数定义和声明: 缺省函数只能放在函数声明——编译器必须在使用函数之前知道缺省值 二.命名空间域 引入...程序在编译时优先顺序:局部域->全局域->展开命名空间域 图示: 三.访问限定符(C++实现封装方式) 引入:如小标题所示,我们知道访问限定符是C++实现封装方式,但是什么是封装呢...C++实现封装,可以通过类和操作数据方法进行结合,通过访问权限(访问限定符)来隐藏对象内部实现细节,控制哪些方法可以类外部直接被使用。...访问限定分类: 访问限定符说明: 四. C++NULL与空指针区别 C++,NULL表示“ 0 ”, 实际是一个宏。 C++要表示 空指针,使用 nullptr。

14010
领券