IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++学习杂记 -> 正文阅读

[C++知识库]C++学习杂记

一、C++函数重载笔记
函数重载:重载就是在一个作用范围内(同一个类、同一个命名空间等)有多个名称相同但参数不同的函数。
参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。
注意:1.在使用重载函数时,同名函数的功能应当相同或相近,不要用同一函数名去实现完全不相干的功能,虽然程序也能运行,但可读性不好,使人觉得莫名其妙。
2.注意,参数列表不同包括参数的个数不同、类型不同或顺序不同,仅仅参数名称不同是不可以的。函数返回值也不能作为重载的依据。
函数的重载的规则:
(1)函数名称必须相同。
(2)参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
(3)函数的返回类型可以相同也可以不相同。
(4)仅仅返回类型不同不足以成为函数的重载。
当实参的类型和形参的类型不一致时情况就会变得稍微复杂,例如函数形参的类型是int,调用函数时却将short类型的数据交给了它,编译器就需要先将short类型转换为int类型才能匹配成功。
应该按照下面的优先级顺序来处理实参的类型:
在这里插入图片描述
C++ 标准还规定,编译器应该按照从高到低的顺序来搜索重载函数,首先是精确匹配,然后是类型提升,最后才是类型转换;一旦在某个优先级中找到唯一的一个重载函数就匹配成功,不再继续往下搜索。

二、C++和C的混合编程
extern “C” 既可以修饰一句 C++ 代码,也可以修饰一段 C++ 代码,它的功能是让编译器以处理 C 语言代码的方式来处理修饰的 C++ 代码。
示例代码

#ifdef __cplusplus
extern "C" {
#end
void display();
#ifdef __cplusplus
}
#endif

三、C++的类与对象
类与对象的关系:类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。
有些教程将类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。
注意:1.与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。
2.类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。
3.栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。
4.类的定义

class Student{  //class为定义类的关键字,Student为自己定义的类名,{}里面的为类的成员(成员变量和成员函数)
public:  //public表示类的成员变量或者成员函数可以访问的权限大小为“公开”。
    //成员变量
    char *name;
    int age;
    float score;
    //成员函数
    void say(){
        cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
    }
};   //;号表示为类定义结束。

注意:(1)类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。
(2)类可以理解为一种新的数据类型,该数据类型的名称是 Student。

5.创建类的对象

//[class] 类名 对象名; [class]表示可以有或者省略关键字,习惯我们通常会省略掉 class 关键字:
class Student LiLei;  //正确
Student LiLei;  //同样正确

6.访问类的对象的成员变量或成员函数
可以用点号“.”访问。

#include <iostream>
using namespace std:
//定义类,一般放在函数外
class People{
public//定义类成员
    int age;
    char *name;
   //定义类函数
```void say(){
           cout<<name<<的年龄是<<age<<endl;
    }
 };
//主函数
int main()
{
     //创建类的对象
     People Li;
     //访问类的成员变量和函数
     Li.name = "Bob";
     Li.age = 18;
     Li.say();
     return 0;
}
最终打印结果为:Bob的年龄是18

7.使用对象指针

```cpp
//代码创建的对象Mn是在栈上分配内存的,使用&取地址
People Mn;
People *pMn = &Mn;
//使用new关键字在堆上创建对象,这必须有指针指向它.原因使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。
People *pLn = new Ln;
pLn->name = "Tom"; //指针访问成员变量用“->”
delete pLn; //delete 和 new成对出现,当变量不再使用,需要从堆中释放。

8.类的成员变量和成员函数
与普通变量和函数的区别:(1)定义类的时候不能对成员变量赋值,原因是它不占内存,而普通变量可以直接赋值。
(2)成员函数是一个类的成员,出现在类体中,它的作用范围由类来决定;而普通函数是独立的,作用范围是全局的,或位于某个命名空间内。
(3)成员函数可以定义在类体内,也可以定义在类体外并在类体内声明。

//上一示例是将say函数定义在类体中,这个示例将成员函数在类体中声明,在类体外定义。
class Student{
public:
    //成员变量
    char *name;
    int age;
    float score;
    //成员函数
    void say();  //函数声明,必须在函数定义之前,也就是该类的对象的创建先于函数say的定义才行。
};
//函数定义
void Student::say(){
    cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
}

(4)成员函数定义在类体内外的差别:
在类体中定义的成员函数会自动成为内联函数,在类体外定义的不会。也就是说如果想定义一个内联函数除了用关键字inline,还可以直接定义到类体中。

9.类成员的访问权限
C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:05:17  更:2021-07-16 11:05:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 16:00:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码