Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Base classes should have virtual destructors#55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
appkins merged 1 commit intocpp-redis:masterfromagasparovic-sabre:patch-2
Jan 27, 2020
Merged

Base classes should have virtual destructors#55

appkins merged 1 commit intocpp-redis:masterfromagasparovic-sabre:patch-2
Jan 27, 2020

Conversation

@agasparovic-sabre
Copy link

Fromhttps://en.cppreference.com/w/cpp/language/destructor ...

Virtual destructors
Deleting an object through pointer to base invokes undefined behavior unless the destructor in the base class is virtual:
class Base {
public:
virtual ~Base() {}
};
class Derived : public Base {};
Base* b = new Derived;
delete b; // safe
A common guideline is that a destructor for a base class must be either public and virtual or protected and nonvirtual

Prevents errors like the following:
INFO: From Compiling external/com_github_cpp_redis_cpp_redis/sources/core/types.cpp:
In file included from external/com_github_cpp_redis_cpp_redis/sources/core/types.cpp:23:
In file included from bazel-out/darwin-fastbuild/bin/external/com_github_cpp_redis_cpp_redis/_virtual_includes/cpp_redis/cpp_redis/core/types.hpp:26:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string:500:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string_view:176:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__string:56:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:644:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1880:58: warning: destructor called on non-final 'cpp_redis::xmessage' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}
^

Fromhttps://en.cppreference.com/w/cpp/language/destructor ...Virtual destructorsDeleting an object through pointer to base invokes undefined behavior unless the destructor in the base class is virtual:class Base { public:    virtual ~Base() {}};class Derived : public Base {};Base* b = new Derived;delete b; // safeA common guideline is that a destructor for a base class must be either public and virtual or protected and nonvirtualPrevents errors like the following:INFO: From Compiling external/com_github_cpp_redis_cpp_redis/sources/core/types.cpp:In file included from external/com_github_cpp_redis_cpp_redis/sources/core/types.cpp:23:In file included from bazel-out/darwin-fastbuild/bin/external/com_github_cpp_redis_cpp_redis/_virtual_includes/cpp_redis/cpp_redis/core/types.hpp:26:In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string:500:In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string_view:176:In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__string:56:In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:644:/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1880:58: warning: destructor called on non-final 'cpp_redis::xmessage' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]    _LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}                                                         ^
@appkinsappkins merged commit147c589 intocpp-redis:masterJan 27, 2020
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@agasparovic-sabre@appkins

[8]ページ先頭

©2009-2025 Movatter.jp