From 9895e340ecfddc820a20910c08ba4f43e693d32c Mon Sep 17 00:00:00 2001 From: e0x2d <2281598291@qq.con> Date: Thu, 27 Feb 2025 22:35:29 +0800 Subject: [PATCH] merge branch cpp OK! --- program/c_cpp/universal/class.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/program/c_cpp/universal/class.md b/program/c_cpp/universal/class.md index 773d584..a0bd92c 100644 --- a/program/c_cpp/universal/class.md +++ b/program/c_cpp/universal/class.md @@ -51,5 +51,22 @@ demo& demo::operator = (demo&&); // 移动赋值构造函数 `egg demo1 = egg::large;` 并且关闭了隐式转换的特性 +## 友元 ++ 友元函数 ++ 友元类 ++ 友元成员函数 +将函数声明放在类体内,public private 内都无所谓 +在声明前面加上friend关键字 -explicit 禁止单个参数构造函数导致的自动类型转换 +## 类的自动转换和强制类型转换 +当类有仅一个参数的构造函数时 +遇到合适的会进行自动转换 +explicit 禁止单个参数构造函数导致的隐式自动类型转换 +仍然可以使用显式强制转换(当不存在二义性时) + +### 转换函数 +`int aaa = int(demo);` +operator typeName(); ++ 必须是类成员 ++ 不能有参数 ++ 不能指定返回类型