centos7cp拷贝不完整

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7cp拷贝不完整相关的知识,希望对你有一定的参考价值。

cp就是拷贝,最简单的使用方式就是:

Bash
cp oldfile newfile
但这样只能拷贝文件,不能拷贝目录,所以通常用:

Bash
cp -r old/ new/
那就会把old目录整个拷贝到new目录下。注意,不是把old目录里面的文件拷贝到new目录,而是把old直接拷贝到new下面,结果是:

引用

Bash
[root@dc5 test]# ll new/
total 4
drwxr-xr-x 2 root root 4096 Dec 15 11:55 old
那如果要保持源文件的所有权限,可以这样:

Bash
cp -rp old/ new/
-p参数,可以保持权限、宿主、时间栈,还可能包括link等;还有更简单的,就是用:

Bash
cp -a old/new/
-a参数,就等于-dpR。
这样centos7cp拷贝就完整
参考技术A centos7cp拷贝不完整,l 不作拷贝,只是链接文件。 需要说明的是:为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名是一个已存在的文...

一个完整的C++类应该包含什么?

1. 一个类有:3构造2赋值1析构 函数 + 拷贝移动 操作

2. 构造函数和析构函数的执行顺序:

  • 构造函数:先初始化成员,再执行函数体

  • 析构函数:先执行函数体,再销毁成员(销毁动作即调用成员的析构函数[内置类型无析构,类类型得有析构])

3. 几个法则:

  • 需要析构函数的类通常需要拷贝构造+拷贝赋值

  • 拷贝构造和拷贝赋值成对出现

4. =default显示要求编译器生成合成版本

5. =delete显示要求编译器定义删除该函数(一般来阻止拷贝)、旧标准通过设定为private来阻止拷贝

6. 交换操作:三次拷贝动作。因此在一个类中设计一个swap函数是重要的优化手段。

7. 将赋值函数理解为“=”,将拷贝操作理解为“分配内存副本”。一个赋值拷贝中,包含了拷贝操作和析构函数(防止将自身赋值自己)


一个完整的类示例代码:

class myClass
{
public:
    myClass(const string s = string("")) ://默认构造
        m_s(new string(s)), 
        m_id(0) 
    { 
        cout << "默认构造调用..." << m_s << endl; 
    }
    myClass(const myClass& mc) //拷贝构造
    {
        m_id = mc.m_id;
        if (m_s) delete m_s;
        m_s = new string(*mc.m_s);//分配内存操作(拷贝)
        cout << "拷贝构造调用..." << m_s << endl;
    }
    myClass(myClass&& mc)//移动构造
    {
        m_id = mc.m_id;
        m_s = mc.m_s;
        mc.m_s = nullptr;
        cout << "移动构造调用..." << m_s << endl;
    }

    myClass& operator=(myClass& mc) //拷贝赋值
    {
        m_id = mc.m_id;
        string* temp = new string(*mc.m_s);//分配内存操作(拷贝)
        if (m_s) delete m_s;
        m_s = temp;
        temp = nullptr;
        cout << "拷贝赋值调用..." << m_s << endl;
        return *this;
    }
    myClass& operator=(myClass&& mc)//移动赋值
    {
        if (this != &mc)
        {
            m_id = mc.m_id;
            m_s = mc.m_s;
            mc.m_s = nullptr;
        }
        cout << "移动赋值调用..." << m_s << endl;
        return *this;
    }

    ~myClass()
    {
        if (m_s) 
        {
            delete m_s;
            m_s = nullptr;
        }
        cout << "析构函数调用..." << endl;
    }

private:
    int m_id;
    string* m_s;
};

int main()
{
    myClass A;//默认构造
    myClass B(A);//拷贝构造
    myClass C(std::move(B));//移动构造
    cout << endl;
    C = A;// 拷贝赋值
    C = std::move(A);//移动赋值

    system("pause");
    return 0;
}
执行结果:


以上是关于centos7cp拷贝不完整的主要内容,如果未能解决你的问题,请参考以下文章

Linux 中PXE远程安装服务器部署

CentOS7下安装JDK详细过程

详细步骤:Centos7安装和卸载删除Redis 6.2.0

CentOS7从U盘中拷贝文件

CentOS7安装Oracle完整教程(超级详细,亲测完美)

Centos7虚拟机下修改IP,进行Nat联网