wordpress
2024年 4月 19日
2024年 4月 18日
ObjC语言NSString *s = @"a我a" 字符串的长度是多少?
首先要清楚,如果是GCC编译,默认源代码需要的UTF-8格式,NSString类型字符串s也是按UTF-8格式保存,即字符串s的raw data是61 e6 88 91 61. s的长度[s leng...
2024年 4月 18日
void f(const int n)和void f(int n)为什么是重定义?
函数参数用const修饰,const不影响函数签名,所以这样的函数定义是重定义。编译器看到参数有const,只是为了确保代码不会意外传入非const参数,而并不是生成了一个带const区分符的不同函数...
2024年 4月 18日
C++成员函数为什么可以由const和非const版本?
const常量的引入导致类成员函数也跟着配合,const对象默认调用const版本的函数,非const对象调用非const版本的函数。
2024年 4月 18日
const描述符可修饰全局函数吗?
C++可以用const修饰成员函数,表示成员函数不会修改任何类成员,这是安全的编码习惯。注意,这仅仅适用于类的成员函数,如果是形如C语言的全局函数,是不可以用const修饰。但,const可以修饰函数...
2024年 4月 18日
ObjC支持函数重载吗?
不管是C89/C99还是C11,都不支持函数重载。ObjC遵循C标准,全局函数默认也不支持重载。但是,类成员方法名称可以加标签label, ObjC可利用label实现"重载",如下。 注意,如果只有...
2024年 4月 18日
为什么会有函数调用参数带标签的写法?
ObjC函数参数形式与众不同,实参前会加前缀,尤其参数很多的情况,可读性很强。例如:[person setAge: 29 setSex:1 setClass: 35]; 这种参数前面加前缀描述也被叫标...
2024年 4月 18日
static成员变量的本质
面向对象编程语言喜欢将全局变量转移到类内部变成static变量,看起来不像全局变量。事实上,编译器会将static成员变量和全局变量看做的一样的,编程语言的写法减少程序员随意操作全局变量的可能,虽然事...