C++ 是一门功能强大的编程语言,广泛应用于系统编程、游戏开发和高性能计算等领域。本文将通过一系列经典问题,深入探讨 C++ 的核心知识点,包括内存管理、多态(结合函数重载与覆盖)、多线程、TCP/IP 模型、软链接与硬链接的区别,以及常见算法实现。每个知识点都配有详细的代码示例和解释,帮助你更好地理解和掌握。
内存泄露是指程序在动态分配内存后,未能正确释放已不再使用的内存,导致内存占用持续增加,最终可能耗尽系统资源,引发程序崩溃或系统性能下降。
new
或 malloc
都有对应的 delete
或 free
。#include
#include
void memoryLeakExample() {
int* ptr = new int(10); // 分配内存
// 忘记 delete ptr;
}
int main() {
memoryLeakExample();
return 0;
}
多态是面向对象编程的三大特性之一,指同一操作作用于不同对象时,可以有不同的解释和执行结果。
virtual
关键字声明基类函数。#include
// 函数重载
void print(int a) { std::cout << "整数: " << a << std::endl; }
void print(double a) { std::cout << "浮点数: " << a << std::endl; }
// 多态
class Animal {
public:
virtual void speak() { std::cout << "动物叫" << std::endl; }
};
class Dog : public Animal {
public:
void speak() override { std::cout << "汪汪汪" << std::endl; }
};
int main() {
// 函数重载
print(5); // 调用 print(int)
print(3.14); // 调用 print(double)
// 多态
Animal* animal = new Dog();
animal->speak(); // 输出 "汪汪汪"
delete animal;
return 0;
}
多线程是指程序同时执行多个任务的能力,C++11 起通过
标准库支持多线程。
#include
#include
void task1() { std::cout << "线程1执行" << std::endl; }
void task2(int x) { std::cout << "线程2执行,参数: " << x << std::endl; }
int main() {
std::thread t1(task1);
std::thread t2(task2, 42);
t1.join();
t2.join();
return 0;
}
TCP/IP 模型是互联网通信的核心框架,分为四层:
#include
#include
namespace fs = std::filesystem;
int main() {
fs::create_hard_link("source.txt", "hardlink.txt");
fs::create_symlink("source.txt", "symlink.txt");
return 0;
}
在一个整型数组里,除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
#include
#include
#include
#include
using namespace std;
class Solution {
public:
vector<int> FindNumsAppearOnce(vector<int>& nums) {
unordered_map<int, int> countMap;
for (int num : nums) {
countMap[num]++;
}
vector<int> result;
for (int num : nums) {
if (countMap[num] == 1) {
result.push_back(num);
}
}
sort(result.begin(), result.end());
return result;
}
};
int main() {
Solution solution;
vector<int> nums = {1, 4, 1, 6};
vector<int> result = solution.FindNumsAppearOnce(nums);
cout << "[" << result[0] << "," << result[1] << "]" << endl; // 输出 [4,6]
return 0;
}
本文通过一系列经典问题,深入探讨了 C++ 的核心知识点,包括内存管理、多态(结合函数重载与覆盖)、多线程、TCP/IP 模型、软链接与硬链接的区别,以及常见算法实现。每个知识点都配有详细的代码示例和解释,帮助你更好地理解和掌握。希望这些内容能为你的编程学习和项目开发提供帮助!
参考资料
内存泄露是指程序在动态分配内存后,未能正确释放已不再使用的内存,导致内存占用持续增加,最终可能耗尽系统资源,引发程序崩溃或系统性能下降。
new
或 malloc
都有对应的 delete
或 free
。#include
#include
void memoryLeakExample() {
int* ptr = new int(10); // 分配内存
// 忘记 delete ptr;
}
int main() {
memoryLeakExample();
return 0;
}
多态是面向对象编程的三大特性之一,指同一操作作用于不同对象时,可以有不同的解释和执行结果。
virtual
关键字声明基类函数。#include
// 函数重载
void print(int a) { std::cout << "整数: " << a << std::endl; }
void print(double a) { std::cout << "浮点数: " << a << std::endl; }
// 多态
class Animal {
public:
virtual void speak() { std::cout << "动物叫" << std::endl; }
};
class Dog : public Animal {
public:
void speak() override { std::cout << "汪汪汪" << std::endl; }
};
int main() {
// 函数重载
print(5); // 调用 print(int)
print(3.14); // 调用 print(double)
// 多态
Animal* animal = new Dog();
animal->speak(); // 输出 "汪汪汪"
delete animal;
return 0;
}
多线程是指程序同时执行多个任务的能力,C++11 起通过
标准库支持多线程。
#include
#include
void task1() { std::cout << "线程1执行" << std::endl; }
void task2(int x) { std::cout << "线程2执行,参数: " << x << std::endl; }
int main() {
std::thread t1(task1);
std::thread t2(task2, 42);
t1.join();
t2.join();
return 0;
}
TCP/IP 模型是互联网通信的核心框架,分为四层:
#include
#include
namespace fs = std::filesystem;
int main() {
fs::create_hard_link("source.txt", "hardlink.txt");
fs::create_symlink("source.txt", "symlink.txt");
return 0;
}
在一个整型数组里,除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
#include
#include
#include
#include
using namespace std;
class Solution {
public:
vector<int> FindNumsAppearOnce(vector<int>& nums) {
unordered_map<int, int> countMap;
for (int num : nums) {
countMap[num]++;
}
vector<int> result;
for (int num : nums) {
if (countMap[num] == 1) {
result.push_back(num);
}
}
sort(result.begin(), result.end());
return result;
}
};
int main() {
Solution solution;
vector<int> nums = {1, 4, 1, 6};
vector<int> result = solution.FindNumsAppearOnce(nums);
cout << "[" << result[0] << "," << result[1] << "]" << endl; // 输出 [4,6]
return 0;
}
本文通过一系列经典问题,深入探讨了 C++ 的核心知识点,包括内存管理、多态(结合函数重载与覆盖)、多线程、TCP/IP 模型、软链接与硬链接的区别,以及常见算法实现。每个知识点都配有详细的代码示例和解释,帮助你更好地理解和掌握。希望这些内容能为你的编程学习和项目开发提供帮助!
参考资料
如果你有任何问题或建议,欢迎在评论区留言!