计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数指针
c++ 基础 基础语法
c++ 多线程
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt 开发环境
qt c++
理解QObject 1
理解QObject 4
qt index
qt qml quick
qt ui
qt 多线程
数据结构 数组
PC问题监控及排查
PC程序性能优化
OS
TOOL
C++ STL
编程漫谈
C++实战-生产者 消费者流水线
C++实战 IO
本站点使用 MrDoc 构建
-
+
c++ 基础 基础语法
# 控制语句 ```c++ switch(): case 1: case 2: case 3: ``` ## 内存相关 explicit, 声明不做隐式转换 隐式转换可能导致的问题: - 对象构造太多,占内存 - 意外的函数匹配 ```c++ void func(Seconds s) { cout << "Seconds version\n"; } void func(int x) { cout << "int version\n"; } func(10); // 哪个被调用? // 编译器会优先选择精确匹配的 func(int),不会触发转换 // 但如果删除了 int 版本,代码会默默调用 Seconds 版本 ``` ```c++ #include <iostream> using namespace std; class Seconds { public: Seconds(int s) : value(s) {} // 没有 explicit int value; }; void printTime(Seconds s) { cout << "time = " << s.value << " seconds\n"; } int main() { Seconds a = 10; // int -> Seconds,发生隐式转换 printTime(5); // 传 int,自动转换成 Seconds } ``` ## 字符串相关 ```c++ #include <cstring> // 定义和初始化 char str1\[\] \= "Hello"; // 自动计算长度(末尾有\\0) char str2\[10\] \= "Hello"; // 指定长度 char\* str3 \= "Hello"; // 字符串字面量(只读,危险) // 常用操作 strlen(str); // 获取长度(不包括\\0) strcpy(dest, src); // 拷贝(不安全,不检查边界) strncpy(dest, src, n); // 受限制拷贝 strcat(dest, src); // 拼接 ``` ## 左值引用 ```c++ int& ref = x; ``` 右值引用 ```c++ int&& rref \= 10; // 绑定到临时对象 string&& s \= "temp"; ```
peipeo
2026年5月11日 23:18
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码