xref: /llvm-project/lldb/test/API/lang/cpp/constructors/main.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht struct ClassWithImplicitCtor {
fooClassWithImplicitCtor2*99451b44SJordan Rupprecht   int foo() { return 1; }
3*99451b44SJordan Rupprecht };
4*99451b44SJordan Rupprecht 
5*99451b44SJordan Rupprecht struct ClassWithDefaultedCtor {
6*99451b44SJordan Rupprecht   ClassWithDefaultedCtor() = default;
fooClassWithDefaultedCtor7*99451b44SJordan Rupprecht   int foo() { return 2; }
8*99451b44SJordan Rupprecht };
9*99451b44SJordan Rupprecht 
10*99451b44SJordan Rupprecht struct ClassWithOneCtor {
11*99451b44SJordan Rupprecht   int value;
ClassWithOneCtorClassWithOneCtor12*99451b44SJordan Rupprecht   ClassWithOneCtor(int i) { value = i; }
13*99451b44SJordan Rupprecht };
14*99451b44SJordan Rupprecht 
15*99451b44SJordan Rupprecht struct ClassWithMultipleCtor {
16*99451b44SJordan Rupprecht   int value;
ClassWithMultipleCtorClassWithMultipleCtor17*99451b44SJordan Rupprecht   ClassWithMultipleCtor(int i) { value = i; }
ClassWithMultipleCtorClassWithMultipleCtor18*99451b44SJordan Rupprecht   ClassWithMultipleCtor(int i, int v) { value = v + i; }
19*99451b44SJordan Rupprecht };
20*99451b44SJordan Rupprecht 
21*99451b44SJordan Rupprecht struct ClassWithDeletedCtor {
22*99451b44SJordan Rupprecht   int value;
ClassWithDeletedCtorClassWithDeletedCtor23*99451b44SJordan Rupprecht   ClassWithDeletedCtor() { value = 6; }
24*99451b44SJordan Rupprecht   ClassWithDeletedCtor(int i) = delete;
25*99451b44SJordan Rupprecht };
26*99451b44SJordan Rupprecht 
27*99451b44SJordan Rupprecht struct ClassWithDeletedDefaultCtor {
28*99451b44SJordan Rupprecht   int value;
29*99451b44SJordan Rupprecht   ClassWithDeletedDefaultCtor() = delete;
ClassWithDeletedDefaultCtorClassWithDeletedDefaultCtor30*99451b44SJordan Rupprecht   ClassWithDeletedDefaultCtor(int i) { value = i; }
31*99451b44SJordan Rupprecht };
32*99451b44SJordan Rupprecht 
main()33*99451b44SJordan Rupprecht int main() {
34*99451b44SJordan Rupprecht   ClassWithImplicitCtor C1;
35*99451b44SJordan Rupprecht   C1.foo();
36*99451b44SJordan Rupprecht   ClassWithDefaultedCtor C2;
37*99451b44SJordan Rupprecht   C2.foo();
38*99451b44SJordan Rupprecht   ClassWithOneCtor C3(22);
39*99451b44SJordan Rupprecht   ClassWithMultipleCtor C4(23);
40*99451b44SJordan Rupprecht   ClassWithMultipleCtor C5(24, 25);
41*99451b44SJordan Rupprecht   ClassWithDeletedCtor C6;
42*99451b44SJordan Rupprecht   ClassWithDeletedDefaultCtor C7(26);
43*99451b44SJordan Rupprecht 
44*99451b44SJordan Rupprecht   return 0; // break here
45*99451b44SJordan Rupprecht }
46