C++:理解拷贝在变量,指针,引用以及构造函数里的意义

变量,指针,引用

//拷贝与拷贝构造函数

//拷贝(copy):拷贝数据,拷贝内存

//=始终是在拷贝值,但是指针存储的是内存的地址,变量存储的是数据的值

//特别注意,在引用里面的拷贝是改变指向,没有复制的操作!


#include 
#include 

//拷贝与拷贝构造函数
//拷贝(copy):拷贝数据,拷贝内存
//=始终是在拷贝值,但是指针存储的是内存的地址,变量存储的是数据的值
//特别注意,在引用里面的拷贝是改变指向,没有复制的操作!
struct Vector2
{
    float x,y;
    
};
int main()
{
    //a,b是两个不同的变量,有两个内存地址,拷贝的是数据,因此a.x=2,b.x=5
    Vector2 a={2,3};
    Vector2 b=a;
    b.x=5;
    
    //如果分配在堆上,用指针,则不同  这里的拷贝是拷贝地址的数字,指向同一块内存
    Vector2* c=new Vector2();
    Vector2* d=c;
    d->x=5;
    std::cout<

//深拷贝:复制整个对象 通过 拷贝构造函数 实现(C++默认提供一个拷贝构造函数)


#include 
#include 
//深拷贝:复制整个对象 通过 拷贝构造函数 实现(C++默认提供一个拷贝构造函数)
class String
{
private:
    char* m_Buffer;
    unsigned int m_Size;
public:
    String(const char* string)//用指针访问字符串字面量的首地址
    {
        m_Size=(int)strlen(string);
        m_Buffer=new char[m_Size+1];//给一个空间给空终止符
        memcpy(m_Buffer, string, m_Size);//拷贝的简单化操作
        m_Buffer[m_Size]=0;//此时的长度+1后,从0开始,一共有string+1个字符串,最后一个是0,终止符
//验证
        //        std::cout<

建议打断点看运行过程理解C++:理解拷贝在变量,指针,引用以及构造函数里的意义_第1张图片

你可能感兴趣的:(c++,开发语言)