是函数符号生成规则中的函数形参作为支持
函数重载就是对函数进行重定义
函数覆盖就是函数的重写
1.同名
2.不同参数
3.同一作用域
其他:
【不同作用域可以存在同名变量】
【所有变量类型系统都可以进行强制转换,程序可以运行但有可能导致数据丢失,系统会提示警告】
【main中不能有同名函数,否则就近原则将调用main中的该函数而不调用外面的函数】
/ | / | / |
---|---|---|
C | malloc[void*malloc(size_t size)] | free [void free(void*ptr)] |
C++ | new | delete |
new | malloc |
---|---|
operator new(用来开辟内存) | 单纯开辟内存 |
constructor (初始化) |
常量是一种标识符,他的值在运行期间恒定不变。c语言用#define来定义常量(宏常量)。C++除了#define海葵科哟用const来定义常量(const常量)。
摘自 《高质量C++C编程指南》
有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达
到目的,于是想当然地觉得应该用const 修饰数据成员来实现。const 数据成员的确是存
在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而
对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const 数据成员
的值可以不同。
不能在类声明中初始化const 数据成员。以下用法是错误的,因为类的对象未被创
建时,编译器不知道SIZE 的值是什么。
class A
{…
const int SIZE = 100; // 错误,企图在类声明中初始化const 数据成员
int array[SIZE]; // 错误,未知的SIZE
};
const 数据成员的初始化只能在类构造函数的初始化表中进行,例如
class A
{…
A(int size); // 构造函数
const int SIZE ;
};
A::A(int size) : SIZE(size) // 构造函数的初始化表
{
…
}
A a(100); // 对象 a 的SIZE 值为100
A b(200); // 对象 b 的SIZE 值为200
怎样才能建立在整个类中都恒定的常量呢?别指望const 数据成员了,应该用类中
的枚举常量来实现。例如
class A
{…
enum { SIZE1 = 100, SIZE2 = 200}; // 枚举常量
int array1[SIZE1];
int array2[SIZE2];
};
枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:
它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如PI=3.14159)。
引用就是别名(引用底层以指针作为支持)
int a=10;
int &b=a;
//&c=b;X
//c=b;X
/int c = b;X
编译阶段——在代码的调用点直接展开代码
以代码膨胀为代价 空间换时间
extern “C” C++独有
名词作用域(防止名词冲突)
using namespace std; //using指示符暴露名词空间作用域下的所有符号
using std::cout;//暴露名词空间作用域下的单个符号。
本文发布于:2024-02-01 14:03:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170676743637120.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |