Can I prevent object from being copied by std::memcpy?

Nykakin

It's easy to make noncopyable class with private copy construcor and assignment operator, boost::noncopyable or the C++11 delete keyword:

class MyClass {
private:
    int i;
public:
    MyClass(const MyClass& src) = delete;
    MyClass& operator=(const MyClass& rhs) = delete;    
    int getI() {
        return i;
    }
    MyClass(int _i) : i(_i){}
};

int main() {
    MyClass a(1), b(2);
    a = b; // COMPILATION ERROR
}

However this doesn't prevent obiect from being deep copied as a pack of bytes:

int main() {
    MyClass a(1), b(2);   
    std::memcpy(&a, &b, sizeof(MyClass));
    std::cout << a.getI() << std::endl; // 2
}

Even if try to prevent it by declaring operator& private, it's still possible to make copy using implementations of address-of idiom:

int main() {
    MyClass a(1), b(2);   
    std::memcpy(std::addressof(a), std::addressof(b), sizeof(MyClass));
    std::cout << a.getI() << std::endl; // 2
}

Is there any method to completely prevent an instance from being copied byte per byte?

R Sahu

Can I prevent object from being copied by std::memcpy?

The simple answer is "No".

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Can I prevent std::sort from copying the passed comparison object

From Dev

Prevent line numbers from being copied to clipboard

From Dev

Can I prevent an interface from being implemented?

From Dev

Can I prevent a class from being inherited by a non-abstract object?

From Dev

How can I prevent external comments from being stored in T-SQL object definitions?

From Dev

Can delegates prevent an object from being garbage collected?

From Dev

Prevent session from being replicated when JSESSIONID cookie copied

From Dev

Is there a very effective method to prevent a .jpg file for being copied from a page?

From Dev

How can I prevent methods from being added to a class?

From Dev

How can I prevent from a close method being invoked?

From Dev

MySQL - Can I prevent a row from being SELECTed?

From Dev

How can I prevent a Dockerfile instruction from being cached?

From Dev

How can I prevent a window from being resized with tkinter?

From Dev

How can I prevent the action bar from being cut off?

From Dev

How can I prevent this script from being freely accessed?

From Dev

How can I prevent a column from being dragged out of the grid?

From Dev

How can I prevent PDF files from being opened?

From Dev

How can I prevent iwconfig power management from being turned on?

From Dev

How can I prevent a certificate from being trusted?

From Dev

How can I prevent a folder from being inadvertently deleted by myself?

From Dev

How can I prevent this script from being freely accessed?

From Dev

How can I prevent arguments to `xargs` from being prefixed with spaces?

From Dev

Can I prevent keyboard input from being used by console?

From Dev

How can I prevent certain process from being swapped?

From Dev

Can I prevent a style rule from being inherited?

From Dev

Can I prevent an OpenPGP key from being synchronized to keyservers?

From Dev

How can I exclude SKAdvisorResources.bundle from being copied within the app?

From Dev

How can I prevent multiple ajax queries from being run on "prev" button being clicked multiple times

From Dev

How can I prevent multiple ajax queries from being run on "prev" button being clicked multiple times

Related Related

  1. 1

    Can I prevent std::sort from copying the passed comparison object

  2. 2

    Prevent line numbers from being copied to clipboard

  3. 3

    Can I prevent an interface from being implemented?

  4. 4

    Can I prevent a class from being inherited by a non-abstract object?

  5. 5

    How can I prevent external comments from being stored in T-SQL object definitions?

  6. 6

    Can delegates prevent an object from being garbage collected?

  7. 7

    Prevent session from being replicated when JSESSIONID cookie copied

  8. 8

    Is there a very effective method to prevent a .jpg file for being copied from a page?

  9. 9

    How can I prevent methods from being added to a class?

  10. 10

    How can I prevent from a close method being invoked?

  11. 11

    MySQL - Can I prevent a row from being SELECTed?

  12. 12

    How can I prevent a Dockerfile instruction from being cached?

  13. 13

    How can I prevent a window from being resized with tkinter?

  14. 14

    How can I prevent the action bar from being cut off?

  15. 15

    How can I prevent this script from being freely accessed?

  16. 16

    How can I prevent a column from being dragged out of the grid?

  17. 17

    How can I prevent PDF files from being opened?

  18. 18

    How can I prevent iwconfig power management from being turned on?

  19. 19

    How can I prevent a certificate from being trusted?

  20. 20

    How can I prevent a folder from being inadvertently deleted by myself?

  21. 21

    How can I prevent this script from being freely accessed?

  22. 22

    How can I prevent arguments to `xargs` from being prefixed with spaces?

  23. 23

    Can I prevent keyboard input from being used by console?

  24. 24

    How can I prevent certain process from being swapped?

  25. 25

    Can I prevent a style rule from being inherited?

  26. 26

    Can I prevent an OpenPGP key from being synchronized to keyservers?

  27. 27

    How can I exclude SKAdvisorResources.bundle from being copied within the app?

  28. 28

    How can I prevent multiple ajax queries from being run on "prev" button being clicked multiple times

  29. 29

    How can I prevent multiple ajax queries from being run on "prev" button being clicked multiple times

HotTag

Archive