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

PHP学习笔记(二)——行云博客

7.1定义命名空间 将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。...1.常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。...> 7.7使用命名空间:后备全局函数/常量 对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。 定义在命名空间"A"中的函数 "F" // 再尝试调用全局函数 "F" // 类引用 new B(); // 创建命名空间 "A" 中定义的类 "B...Apple::MAX_WEIGHT; //静态常量 ?> 8.9常量 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。

3.8K30

预处理--》编译--》运行的区别

枚举类型的成员是常量,它们的值由编译器自动分配,例如定义了上面的枚举类型之后,RECTANGULAR就表示常量0,POLAR 表示常量1。...有一点需要注意,虽然结构体的成员名和变量名不在同一命名空间中,但枚举的成员名却和变量名在同一命名空间中,所以会出现命名冲突。那什么是命名空间呢?...其实加了关键字const只是提示编译器这个变量是常量,如果我们在接下来的操作中试图更改它,编译器会报错,而并不是真正的常量,上面的例子也说明通过指针也是可以更改的,什么情况下完全不能修改呢,当A是加const...都替换成宏定义中的 1了,所以接下去进行编译时当然会报错了,因为你在 int 1啊,能不错吗?...如double pi = acos(-1.0); 因为程序开始运行时要用适当的值来初始化全局变量,所以初始值必须保存在编译生成的可执行文件中,因此初始值在编译时就要计算出来,然而上面那种Initializer

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

    php代码抄写笔记

    static关键字用在函数内变量前表示该变量在函数执行完成后不销毁,且static关键字定义的变量赋予的仅是初始值,再次执行函数,不会执行定义中的赋值操作。 初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。 实例 下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。...警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。...常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。 NAMESPACE 示例, 在命名空间中的代码 ---- 使用命名空间:后备全局函数/常量 在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。

    4.1K10

    【C++】学完c语言后的c++基础知识补充!(命名空间、输入和输出、缺省函数、函数重载、引用、内联函数代替宏、nullptr代替NULL)

    ,编译器最后会合并到一个命名空间中。...概念 缺省参数是在定义或声明函数时为函数的参数指定一个默认值。 调用该函数时,如果没有传对应的实参的值,则该参数就使用之前设定好的默认值(缺省值)。...带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参 缺省参数不能在函数的声明和定义中同时出现。如果声明和定义分离的话,建议在声明那里缺省,这样便于在头文件里查找修改。...因为inline既要要被展开,就没有函数地址了,链接就会找不到 2. c++替代宏的方法 常量定义 :换用const来修饰 函数定义: 换用内联函数 七. nullptr与NULL NULL 预处理后...:0 (可能被定义为字⾯常量0,使用需要类型转换) nullptr 预处理后:(void*)0 (隐式地转换为指针类型,避免类型转换问题) 故在c++,可以使用nullptr代替NULL传递空指针。

    7510

    【深入浅出C#】章节 2:数据类型和变量:变量和常量的声明和初始化

    通过声明变量,我们可以定义程序中需要使用的数据,并为其分配内存空间。通过初始化变量,我们可以为变量赋予初始值,确保在使用变量时具有合适的值。...通过在声明时初始化变量,可以明确地表达变量的意图和初衷,使代码更易读,并且更容易维护。 支持编译器优化:在某些情况下,编译器可以利用变量的初始值进行优化,以提高程序的性能。...以下是常量的一些概念和特点: 定义常量: 常量在声明时使用const关键字来标识,后面紧跟数据类型和常量名,然后使用赋值运算符(=)给常量赋初始值。...常量的初始化必须在声明时进行,且必须赋予一个初始值。 常量的命名通常使用大写字母,以增加其可读性和标识性。 常量的值不能在程序的执行过程中更改,任何试图更改常量值的操作都会导致编译错误。...如果需要在运行时动态确定变量的值,应该使用可变的实例字段而不是只读变量。 七、最佳实践和注意事项 在C#中,使用变量和常量时,有一些最佳实践和注意事项可以帮助提高代码的可读性、可维护性和性能。

    61520

    《C++Primer》第二章 变量和基本类型

    空指针不指向任何对象,在试图使用一个指针之前最好先判断它是否为空。C++11中得到空指针最直接的方法就是字面值nullptr。 建议:初始化所有指针。...如果我们希望只在一个文件中定义const然后在其他多个文件中声明并使用它。解决的方法是对于const变量无论是声明还是定义都使用extern关键字,这样就仅需定义一次了。...类型说明符,可以让编译器通过初始值来推断变量的类型。...需要注意的是,编译器推断出来的auto类型有时候与初始值的类型并不完全一样,编译器会适当地改变结果类型使其更加符合初始化规则。...编写自己的头文件 为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应与类的名字一样。

    54310

    C++初阶-入门基础语法

    中定义的Add函数时: 编译后链接前,a.o的目标文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中 链接器看到a.o调用Add,但是没有Add的地址,就会到b.o...常量定义 换用const 函数定义 换用内联函数 八、auto关键字 ---- 简介: 早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量(没什么用) C++11中赋予...迭代的对象要实现++和==的操作(现在只做了解) 十、指针空值nullptr ---- C++98中的指针空值 声明一个变量时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误 指针没有合法的指向初始化...,或者被定义为无类型指针(void*)的常量,不论采取何种定义,在使用空值的指针时,都不可避免的会遇到一些麻烦 示例: void f(int) { cout定义成0,因此与程序的初衷相悖 在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用

    71620

    C++入门必备知识(你真的入门C++了吗?)

    注:同一个命名域中不能定义同名的变量 //1.普通的命 名空间 namespace N1 // N1为命名空间的名称 //命名空间中的内容,既可以定义变量,也可以定义函数 int a; int Add...,编译器最后会合成同一个 命名空间中。...namespace N1 { int Mu1(int left, int right) return left *right; } 注:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中...(关于迭代器这个问题,以后会讲,现在大家了解一下就可以了) C++98中的指针空值 在良好的C/C++编程习惯中,声明一个变量时最好给该变量-个合适的初始值,否则可能会出现不可预料的错误,比如末初始化的指针...在C++98中,字面常量0既可以是一个 整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个 整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。

    49820

    【C++】——入门基础知识

    同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。...left * right; } } 注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中 2.2 命名空间使用 命名空间中成员该如何使用呢?...,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。...指针空值---nullptr(C++11) 10.1 C++98中的指针空值 在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现 不可预料的错误,比如未初始化的指针...在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器 默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0

    11910

    C++入门

    同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。...) { return left * right; } } 注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中 2.2 命名空间使用...,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。...指针空值nullptr(C++11) 10.1 C++98中的指针空值 在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现 不可预料的错误,比如未初始化的指针。...在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器 默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。

    9810

    第 18 章 用于大型程序的工具

    命名空间,既可以定义在全局作用域内,也可以定义在其他命名空间中,但是不能定义在函数和类的内部。 命名空间作用域后面无需分号。...模板特例化必须定义在原始模板所属的命名空间中,在命名空间中声明了特例化后,就能在命名空间的外部定义它了。...} 全局作用域中定义的名字(即在所有类、函数及命名空间之外定义的名字),也就是定义在全局命名空间中。...如果一个头文件定义了未命名的命名空间,则该命名空间中定义的名字将在每个包含了该头文件的文件中对应不同实体。 未命名的命名空间中定义的名字的作用域与该命名空间所在的作用域相同。...未命名的命名空间定义在文件的最外层作用域时,在该命名空间中的名字一定要与全局作用域中的名字有所区别。

    93020

    第 18 章 用于大型程序的工具

    命名空间,既可以定义在全局作用域内,也可以定义在其他命名空间中,但是不能定义在函数和类的内部。 命名空间作用域后面无需分号。...模板特例化必须定义在原始模板所属的命名空间中,在命名空间中声明了特例化后,就能在命名空间的外部定义它了。...} 全局作用域中定义的名字(即在所有类、函数及命名空间之外定义的名字),也就是定义在全局命名空间中。...如果一个头文件定义了未命名的命名空间,则该命名空间中定义的名字将在每个包含了该头文件的文件中对应不同实体。 未命名的命名空间中定义的名字的作用域与该命名空间所在的作用域相同。...未命名的命名空间定义在文件的最外层作用域时,在该命名空间中的名字一定要与全局作用域中的名字有所区别。

    99450

    【C++】C++基础语法

    ---- 2.命名空间的嵌套 命名空间可以嵌套多层 namespace N1 { int a; //全局变量 在命名空间中,只有在自定义函数中,才是局部变量。...就比如在官方库中,多个文件会定义相同的命名空间名,在Queue.h中,定义的为 bit, 在Stack.h中,也是定义的bit,这会冲突吗??...---- 4.std官方库定义的命名空间 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中 C++中,我们使用的函数都在std命名空间里,所以在我们使用时,经常会这样:...---- 七、指针空值nullptr(C++11) 在C语言中,指针为空时为NULL; NULL实际是一个宏,在传统的C头文件(stddef.h)中, NULL可能被定义为字面常量0,或者被定义为无类型指针...调用func1时,找不到符号表,直接报错。 所以最好的方式就是,定义和声明在一起,找的时候,会直接在上面的定义中调用。

    1.4K20

    什么?CC++面试过不了?因为你还没看过这个!

    作用 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。...修饰普通函数,表明函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定位为 static。...递归、switch 等复杂操作的内联函数; 在类声明中定义的函数,除了虚函数的其他函数都会自动隐式地当成内联函数。...内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。 在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏定义则不能。...,是一种在异常时可以帮助避免资源泄漏的智能指针。

    3.7K50

    【C++】C++ 引用详解 ① ( 变量的本质 - 引入 “ 引用 “ 概念 | 引用语法简介 | 引用做函数参数 | 复杂类型引用做函数参数 )

    代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std..., 必须要依附于某个变量 , 在定义 " 引用 " 时 , 必须进行初始化 , 否则就会报如下错误 : 引用 变量 x 需要初始值设定项 这里有一种特殊情况 , 在声明时可以不进行初始化 , " 引用...; 代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace...标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; // 导入 C 头文件 #include // 交换 a 和 b 的值 /...// 该命名空间中 , 定义了很多标准定义 using namespace std; // 导入 C 头文件 #include // 定义一个结构体 // C++ 中结构体就是类

    1.1K21

    C++中变量声明与定义的规则

    当一个源程序由多个源程序组成时,非静态的全局变量在各个源文件中都是有效的,而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。...匿名命名空间:指关键字namespace后紧跟花括号括起来的一系列声明语句,具有如下特点: 在匿名命名空间内定义的变量具有静态生命周期 匿名空间在某个给定的文件内可以不连续,但是不能跨越多个文件 每个文件定义自己的匿名命名空间...,不同文件匿名命名空间中定义的名字对应不同实体 如果在一个头文件中定义了匿名命名空间,则该命名空间内定义的名字在每个包含该头文件的文件中对应不同实体 namespace { int i; //...为了执行这个替换,编译器必须知道变量的初始值,如果程序包含多个文件,那么每个用了这个const对象的文件都必须得能访问到它的初始值才行(即每个文件都要定义const对象)。...仅当size()是一个constexpr函数时才是常量表达式, 运行时才能获得具体值就不是常量表达式 在一个复杂系统中,我们很难分辨一个初始值是否是常量表达式,通过constexpr关键字声明一个变量

    2.4K10

    C语言与C++面试知识总结

    作用 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。...修饰普通函数,表明函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定位为 static。...、递归、switch 等复杂操作的内联函数; 在类声明中定义的函数,除了虚函数的其他函数都会自动隐式地当成内联函数。...内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。 在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏定义则不能。...,是一种在异常时可以帮助避免资源泄漏的智能指针。

    5K41

    Swift变量 常量

    变量声明 变量声明意思是告诉编译器在内存中的哪个位置上为变量创建多大的存储空间。...在字符串中可以使用括号与反斜线来插入变量,如下: var name = "百度" var site = "http://www.baidu.com" print("\(name)的官网地址为:\(site...)") Swift 常量 常量一旦设定,在程序运行时就无法改变其值。...常量可以是任何的数据类型如:整型常量,浮点型常量,字符常量或字符串常量。同样也有枚举类型的常量: 常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量的值可以随意更改。...需要注意的是常量定义时必须初始值: let constA = 42 print(constA) let constB:Float = 3.14159 print(constB) 常量命名和输出和变量一样

    44620

    C++入门基础

    项目工程中多文件中定义的同名namespace会认为是一个namespace,不会冲突。 C++标准库都放在一个叫std(standard)的命名空间中。...正常的命名空间定义 // dlj是命名空间的名字,⼀般开发中是⽤项⽬名字做命名空间名。...所以我们要使用命名空间中定义的变量/函数,有三种方式: 1.指定命名空间访问,项目中推荐这种方式。...((void *)0) #endif #endif • C++中NULL可能被定义为字面常量0,或者C中被定义为无类型指针(void*)的常量。...不论采取何种定义,在使用空值的指针时,都不可避免的会遇到一些麻烦,本想通过f(NULL)调用指针版本的 f(int*)函数,但是由于NULL被定义成0,调用了f(int x),因此与程序的初衷相悖。

    10010

    【笔记】《C++Primer》—— 第18章:用于大型程序的工具

    标准库类型都保证自己的析构不会抛出异常 异常自然也可能在构造函数出现,如果我们在构造函数体中初始化成员自然可以用try-catch处理,但是初始值列表在返回之外,为了处理初始值列表的异常我们需要用函数try...catch捕获异常忽略掉 catch只允许最基础的转换,包括常量改变,派生向基类,数组转指针,函数转指针四种,其他的类型转换都不支持 有时候我们发现单个catch无法完全处理好异常时,我们用一个空的throw...命名空间的特点是命名空间可以嵌套定义,使用方法和嵌套类差不多,但是注意命名空间不能放在函数或类的内部 命名空间可以分布式定义,也就是可以被定义在不同的文件中,但是此时要注意命名空间有声明顺序的问题,只能使用已经被编译器获得到的名称...,将旧版本的代码放在命名空间中,新版本则内联,这样容易切换所需的版本 如果namespace后面不加名字直接定义命名空间的话,此时称为未命名命名空间,在这里面定义的变量有静态的生命周期,在第一次使用时创建...未命名的命名空间中的名字作用域其所在的空间相同,如果定义在全局区域则相当于全局作用域,定义在别的空间中则相当于其他的命名空间 除了直接特指命名空间中的名称来进行调用外,我们也可以用using XXX

    1K20
    领券