【C++笔记】09 类
1 访问标号(public/private/protect)
访问标号public、private、protect可以多次出现在类定义中,给定的访问标号应用到下一个访问标号出现时为止。
struct默认的访问标号为public,class默认的访问标号是private。
类对其成员的访问形式主要有以下两种:
内部访问:由类中的成员函数对类的成员的访问;
对象访问:在类外部,通过类的对象对类的成员的访问。
注:类的成员函数(内部访问)以及友元函数可以访问类中所有成员,但是在类外通过类的对象(对象访问)只能访问该类的公有成员。
2 类的成员
2.1 类的成员函数
在类中声明成员函数是必需的,而定义成员函数则是可选的。
注:在类内部定义的函数默认为inline(...
【C++笔记】08 指针与引用
1 指针
1.1 指针的声明
string *ps1;
一个有效的指针必然是以下三种状态之一:
保存一个特定对象的地址;
指向某个对象后面的另一个对象;
0值。
若指针保存0值,表明它不指向任何对象。未初始化的指针是无效的,直到给该指针复制后,才可使用它。
1.2 typedef
C语言允许使用typedef说明一种新类型名,来代替已有类型名,形式为:
typedef 类型名 标识符;
其中类型名是在此语句前已有的类型标识符,标识符是用作新类型名的用户自定义标识符。例如:
typedef float REAL;
typedef char* PCHAR;
REAL a,b; //等价于float a,b;
PCHAR p; //等价于char* p...
【C++笔记】07 函数
1 函数的声明与定义
函数声明原型的结构是:
返回值类型 函数名(参数表);
函数定义的格式为:
返回值类型 函数名(参数表)
{
语句块;
}
2 参数传递
函数的参数分为形参和实参两种:
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。
实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
形参和实参的功能是做数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向被调函数的数据传送。
一般来说,函数调用时,
C中有两种传递:值传递和指针传递(传递地址)。
注:严格来说,只有一种传递(值传递),指针传递也是按值传递的,复制的是...
【C++笔记】06 C预处理器、作用域、static、const以及内存管理
1 C预处理器
C语言的预处理主要有三个方面的内容:
宏定义与宏替换
文件包含
条件编译
1.1 宏定义与宏替换
宏语句一般以#define开头,分为两种:符号常量的宏定义和带参数的宏定义。
符号常量的宏定义与宏替换
#define 标识符 字符串
其中标识符为宏名称,宏定义末尾不加分号。
注:由于预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,故预处理是不做语法检查的。且宏定义不分配内存,变量定义才会分配内存。
带有参数的宏定义与宏替换
#define 标识符(参数列表)字符串
对带有参数的宏定义进行宏替换时,不仅对宏标识符做字符替换,还必须做...
【C++笔记】05 运算符及其优先级
1 表达式及语句
表达式:由操作数和运算符组成。例如:算术表达式A+B是由操作数A、B和二元运算符‘+’组成。
语句:语句通常以分号结尾,从功能上说,语句大体可分为执行性语句和说明性语句两大类。执行性语句旨在表述程序的动作,又可分为赋值语句、控制语句和输入输出语句。说明性语句旨在定义各种不同数据类型的变量或运算。
2 赋值语句
在赋值语句A=B中,对赋值运算符“=”右边的B,我们需要的是它的值(称为右值),对左边的A,我们需要的是它所代表的存储单元(地址)(称为左值)。
赋值运算符的左操作数必须是非const的左值。
与其他二元操作符不同,赋值操作具有右结合特性,当表达式含有多个赋值操作时,从右向左结合。多个赋值操作中,各变量必须具有相同的数据类型,或者具有可转换为同一类型...
【C++笔记】04 结构体、共用体与枚举
1 结构体 struct
结构体相比于数组,有以下两点不同:
结构体可以在一个结构中声明不同的数据类型;
相同的结构体变量之间可以相互赋值。
C++中struct具有很多class的功能,但也存在不同点:
class的成员访问权限默认为private,而struct成员的访问权限默认为public;
struct不能定义无参的构造函数。
1.1 结构体定义
定义结构体类型变量的一般形式为:
struct 类型名{
类型名1 成员名1;
类型名2 成员名2;
...
类型名n 成员名n;
};
注:定义结构体类型时,只说明该类型的组成情况,并没有分配空间,只有当定义属于结构体类型的变量时,系统才会分配空间给该变量。
...
【C++笔记】03 字符串处理函数
1 strlen(s)
功能:返回s的长度,不包括字符串结束符 null
size_t strlen(const char* str)
{
assert(str != nullptr);
size_t ret = 0;
while((*str++)!= '\0')
ret++;
return ret;
}
size_t strlen(const char* str)
{
assert(str != nullptr);
return *str == '\0' ? 0 : (1 + strlen(++str));
}
注:若有char ca1[]={'C','+','+'};//末尾没有null字...
共计 11 篇文章,2 页。