-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathA10-3-1.cpp
More file actions
68 lines (59 loc) · 1.43 KB
/
A10-3-1.cpp
File metadata and controls
68 lines (59 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Rule: A10-3-1
// Source line: 15481
// Original file: A10-3-1.cpp
// $Id: A10-3-1.cpp 289436 2017-10-04 10:45:23Z michal.szczepankiewicz $
class A
{
public:
virtual ~A() {}
// Compliant
virtual void F() noexcept = 0;
// Compliant
virtual void G() noexcept final = 0; // Non-compliant - virtual final pure
// function is redundant
virtual void
H() noexcept final // Non-compliant - function is virtual and final
{}
virtual void K() noexcept // Compliant
{}
virtual void J() noexcept {}
virtual void M() noexcept // Compliant
{}
virtual void Z() noexcept // Compliant
{}
virtual A& operator+=(A const& rhs) noexcept
{
// ...
return *this;
}
};
class B : public A
{
public:
~B() override {}
virtual void F() noexcept override
// Compliant
// Non-compliant - function is specified
// with virtual and override
{}
void K() noexcept override
final // Non-compliant - function is specified with override and final
{}
virtual void M() noexcept // Compliant - violates A10-3-2
{}
void Z() noexcept override // Compliant
{}
void J() noexcept // Non-compliant - virtual function but not marked as
// overrider
{}
A& operator+=(A const& rhs) noexcept override // Compliant - to override
// the operator correctly,
// its signature needs to be
// the same as in the base
// class
{
// ...
return *this;
}
// Compliant
};