c++黑马程序员老师的代码
C++是一种高级编程语言,它在计算机编程领域中应用广泛。这里介绍的是C++黑马程序员老师的一些C++代码,希望能给大家带来帮助。
1. 字符串反转
char* reverse(char* str)
{
char* p = str;
char* q = str;
while (*q) ++q;
q--;
上海传智播客黑马程序员 while (p < q)
{
char temp = *p;
*p++ = *q;
*q-- = temp;
}
return str;
}
这段代码实现的功能是将字符串进行反转。先定义两个字符指针,一个指向字符串头,一个指向尾部;然后用一个while循环将指针q移动到字符串的尾部;接着用两个while循环,将指针p和q相互交换,最后返回反转后的字符串。
2. 对象浅拷贝和深拷贝
浅拷贝:
class MyClass
{
public:
MyClass(int size): size_(size)
{
data_ = new int[size_];
}
MyClass(const MyClass& other)
{
data_ = other.data_;
size_ = other.size_;
}
~MyClass()
{
delete [] data_;
}
void print()
{
for (int i = 0; i < size_; ++i)
cout << data_[i] << ' ';
cout << endl;
}
private:
int* data_;
int size_;
};
这是一个简单的类,其中包含一个动态分配的数组data_。在MyClass进行浅拷贝时,只是拷贝了指针data_和size_的值,而没有拷贝指针所指向的堆上的内存,因此在析构时需要手动释放内存,否则会产生内存泄漏。
深拷贝则是将指针所指向的堆上的内存也进行了拷贝,因此需要重新分配空间,并将原始对象的每个元素拷贝到新的对象中,确保每个指针都指向新的内存空间。
3. 智能指针
智能指针是C++11引入的一种新型指针,它能够自动管理分配的内存,避免内存泄漏等问题。这里提供一个使用shared_ptr的示例:
#include <iostream>
#include <memory>
using namespace std;
class MyClass
{
public:
MyClass()
{
cout << "Constructor called." << endl;
}
~MyClass()
{
cout << "Destructor called." << endl;
}
};
总结
以上就是C++黑马程序员老师的一些C++代码示例,对于初学者和有一定基础的学生来说,这些代码会有一定的参考价值,希望能对大家的学习和编程实践有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论