C++进阶学习手册----类和对象

本文从C语言过渡到C++,详细介绍了C++中的命名空间、布尔类型、new和delete运算符、inline内联函数、函数默认参数、函数重载。接着深入探讨了类和对象,包括类的定义、对象创建、成员访问权限、构造函数、析构函数、this指针、static成员变量和成员函数、const成员以及友元函数和友元类,帮助读者深入理解C++的面向对象特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、从C到C++

1、C++命名空间

为了解决合作开发时的命名冲突问题,C++引入了命名空间(Namespace)的概念。
可以使用using来指明要使用的命名空间,例如:

using namespace Li;
fp = fopen("one.txt", "r");  //使用小李定义的变量 fp
Han :: fp = fopen("two.txt", "rb+");  //使用小韩定义的变量 fp

其中 :: 称为域解析操作符,在C++中用来指明要使用的命名空间。
C++将类、函数、宏等都统一纳入一个命名空间,这个命名空间的名字就是std,std是standard的缩写,意思为”标准命名空间“,新版C++库的头文件都是使用的std命名空间。

2、C++布尔类型(bool)

C语言并没有彻底从语法上支持“真”和“假”,只是用 0 和非 0 来代表。C++ 新增了 bool 类型,占用 1 个字节长度。bool 类型只有两个取值,true 和 false:true 的值为1,false 的值为0。

3、C++ new和delete运算符

C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。C++又新增了两个关键字,new 和 delete:new 用来动态分配内存,delete 用来释放内存,例如:

int *p = new int;  //分配1个int型的内存空间
delete p;  //释放内存

new 操作符会根据后面的数据类型来推断所需空间的大小。
如果希望分配一组连续的数据,可以使用 new[]:

int *p = new int[10];  //分配10个int型的内存空间
delete[] p;

用 new[] 分配的内存需要用 delete[] 释放,它们是一一对应的。
new 也是在堆区分配内存,必须手动释放,否则只能等到程序运行结束由操作系统回收。注意:为了避免内存泄露,通常 new 和 delete、new[] 和 delete[] 操作符应该成对出现,并且不要和 malloc()、free() 混用。在C++中,建议使用 new 和 delete 来管理内存,它们可以自动调用构造函数和析构函数。

4、C++ inline内联函数

为了消除函数调用的时间和空间开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数(Inline Function),又称内嵌函数或者内置函数。
指定内联函数的方法很简单,只需要在函数定义处增加 inline 关键字。
注意:一般只将那些短小的、频繁调用的函数声明为内联函数。

//声明内联函数
void swap(int *a, int *b);  //也可以添加inline,但编译器会忽略

int main(){
   
   
    int m = 10, n = 20;
    swap(m, n);
    return 0;
}

//定义内联函数
inline void swap1(int &a, int &b){
   
   
    int temp = a;
    a = b;
    b = temp;
}

5、C++ 函数的默认参数

默认参数指当函数调用中省略了实参时自动使用的一个值,这个值就是给形参指定的默认值。
注意:默认参数只能放在形参列表的最后,而且一旦为某个形参指定了默认值,那么它后面的所有形参都必须有默认值。实参和形参的传值是从左到右依次匹配的,默认参数的连续性是保证正确传参的前提。

void func(int a, int b=10, in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值