
C++
学习笔记
guardwhy
这个作者很懒,什么都没留下…
展开
-
10- 运算符重载
1- 基本要求 C++预定义的运算符,只能用于基本数据类型的运算:整型、实型、字符型、逻辑型…+、-、*、/、%、^、&、~、!、|、=、<<>>、!=、 在数学上,两个复数可以直接进行+、-等运算。但在C++中,直接将+或-用于复数对象是不允许的。 2- 运算符重载定义 运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。 运算符重载的目的是:扩展C++中提供的运算符的适用范围,使之能作用于对象。同原创 2020-12-28 21:04:52 · 385 阅读 · 0 评论 -
09- 成员属性
静态成员 在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。 静态成员变量 在一个类中,若将一个成员变量声明为static,这种成员称为静态成员变量。与一般的数据成员不同,无论建立了多少个对象,都只有一个静态数据的拷贝。静态成员变量,属于某个类,所有对象共享。 静态成员变量特点 所有对象都共享同一份静态成员。 在编译阶段就分配了内存。必须在类内声明、类外初始化。 代原创 2020-12-28 20:41:47 · 280 阅读 · 0 评论 -
08-类型转换
C方式的强制类型转换 代码示例 #include <stdio.h> typedef void(PF)(int); // 结构体 struct Point { int x; int y; }; int main() { int v = 0x12345; // 强制类型转换 PF* pf = (PF*)v; char c = char(v); Point* p = (Point*)v; pf(5);原创 2020-12-28 20:35:03 · 106 阅读 · 0 评论 -
07-动态内存分配
动态对象创建 产生条件 当创建数组的时候,总是需要提前预定数组的长度,然后编译器分配预定长度的数组空间,在使用数组的时,会有这样的问题,数组也许空间太大了,浪费空间,也许空间不足,所以对于数组来讲,如果能根据需要来分配空间大小再好不过。所以动态的意思意味着不确定性。 C动态分配内存 为了解决这个普遍的编程问题,在运行中可以创建和销毁对象是最基本的要求。c早就提供了动态内存分配(,函数malloc和free可以在运行时从堆中分配单元。 代码示例 int *p = (int*) malloc( sizeof(i原创 2020-12-28 20:32:19 · 131 阅读 · 1 评论 -
06-析构函数和构造函数
析构函数 创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作,例如释放分配的内存、关闭打开的文件等。 特点: 析构函数是一种特殊的成员函数,没有返回值,是在销毁对象时自动执行。构造函数的名字和类名相同,而析构函数的名字是在类名前面加一个~符号。析构函数不允许有参数 ,不可以发生重载。 构造函数 用途: 构造函数主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。 析构函数主要用于对象销毁前系统自动调用,执行一些清理工作。 基原创 2020-12-28 20:30:36 · 432 阅读 · 0 评论 -
05- 类和对象
面向对象 将日常生活中习惯的思维方式引入程序设计中,将需求中的概念直观的映射到解决方案中。 以模块为中心构建可复用的软件系统,提高软件产品的可维护性和可扩展性 C++类和对象 C++是一门面向对象的编程语言,理解 C++,首先要理解**类(Class)和对象(Object)**这两个概念 生活中的类和对象 类 类:指的是一类事物,是一个抽象的概念。类是一种模型,这种模型可以创建出不同的对象实体。 对象 对象实体是类模型的一个具体实例,对象:指的是属于某个类的具体实体。 C++ 中的类(Class)可原创 2020-12-28 20:28:42 · 141 阅读 · 0 评论 -
04-函数重载
函数默认参数 C++在声明函数原型的时可为一个或者多个参数指定默认的参数值,当函数调用的时候如果没有指定这个值,编译器会自动用默认值代替。 代码示例 #include <iostream> /** * 默认参数 */ using namespace std; /** * 1、默认参数 ,可以给形参加默认值,如果传入值,就用用户传的实参,如果没有就用默认值 */ //如果某个位置已经有了默认参数,那么从这个位置起,后面的参数都必须有默认参数。 int function(int a, in原创 2020-12-28 20:25:34 · 162 阅读 · 0 评论 -
03-内联函数
内联函数 产生原因 C 语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语意差 错。 宏函数和普通函数的区别 优缺点 宏函数 普通函数 优点 内嵌代码,辟免压栈与出栈的开销。 高度抽象,避免重复开发,类型检查 缺点 代码替换,易使生成代码体积变大,易产生逻辑错误, 无类型检查 压栈与出栈,带来开销 代码示例 #include <iostream> /** * 宏函数和普通函数原创 2020-12-28 19:53:33 · 124 阅读 · 0 评论 -
02-引用
引用 引用的特点 **引用是c++对c的重要扩充。**在c/c++中指针的作用基本都是一样的,但是c++增加了另外一种给函数传递地址的途径,这就是按引用传递。 变量名实质上是一段连续内存空间的别名,是一个标号。 程序中通过变量来申请并命名内存空间 通过变量的名字可以使用存储空间 基本语法 数据类型 & 别名 = 原名 重点注意 &在此不是求地址运算,而是起标识作用。 类型标识符是指目标变量的类型。 必须在声明引用变量时进行初始化。 引用初始化之后不能改变。 不能有NULL引用。必须确原创 2020-12-28 19:50:17 · 104 阅读 · 0 评论 -
01- 从C 到C++
C++的概述 C++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++继承了c语言高效,简洁,快速和可移植的传统。c++语言融合了3种不同的编程方式: c语言代表的过程性语言. c++在c语言基础上添加的类代表的面向对象语言. c++模板支持的泛型编程。 C语言和C++语言的联系 C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似。 初识C++ 代码示例 #include <iostrea原创 2020-12-28 19:48:06 · 208 阅读 · 0 评论