Skip to content

Educational and experimental projects intended to play with C and C++

License

Notifications You must be signed in to change notification settings

kyberdrb/CLionProjects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CLionProjects

Educational and experimental materials.

Various projects to showcase of

  • C features and language mechanics
  • C++ features, mainly from modern C++11 onwards
  • examples and referential implementations of selected design patterns in modern C++
  • various toy projects

Most of the project were being created with CLion, which is my favourite IDE to create C/C++ projects, because of its stability, simplicity, completeness - bundles compiler and debugger and makes output from profiler and Valgrind memory checker easier to interpret - and cross-platform interoperability.

Concrete projects are listed below in no particular order. The purpose of each project is described by its name:

  • ReferenceToPointer
  • Forward_Class_Declaration_in_CPP_Error_Create_instance_of_incomplete_type
  • Header_guards_ifndef
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance_A_horrible_workaround
  • const_member_variable-static_global
  • animation-single_character_circular
  • Sharing_with_temporary_ownership_weak_ptr_Memory_leak
  • Linker_error_Undefined_reference_Different_definition_Fix_definition
  • Constructor_inheritance_The_Problem
  • Instance_ownership_Other_object_owns_the_instance_Instance_can_live_shorter_than_owner_Alternative_with_weak_ptr_member_variable
  • PolymorphicClone_ModernSolutionMultipleInheritance
  • An_Implementation_Helper_For_The_Curiously_Recurring_Template_Pattern-Adding_several_functionalities_with_CRTP-diamond_inheritance
  • Linkage_scope_and_initialization_for_local_static_variable
  • The_Curiously_Recurring_Template_Pattern_in_CPP-Eli_Bendersky
  • PIMPL_Idiom_Unique_pointer_before_and_after
  • Instance_ownership_Other_object_owns_the_instance_Instance_can_live_shorter_than_owner
  • Compilation_process
  • C++_OOP
  • Benchmark_std_endl_vs_newline
  • job_interview_preparation-c_language
  • Declaration_Definition
  • For_loops_with_signed_and_unsigned_counters-algorithm
  • UML_Relationships_CPP
  • LinkedListUniquePtr
  • MiniDatabase
  • Instance_ownership_Other_object_owns_the_instance_Instance_lives_longer_than_owner
  • Constructor_delegation_The_Solution_Multiple_Constructors_Refactoring
  • state_design_pattern
  • refactoring_mixin_class_from_inheritance_to_composition_by_LSP
  • weak_ptr_example
  • R_30_Take_smart_pointers_as_parameters_only_to_explicitly_express_lifetime_semantics_modernescpp
  • Shapes_Templated_factory_Smart_pointers
  • Forward_Class_Declaration_in_CPP_Error_Delete_incomplete_type
  • Forward_Class_Declaration_in_CPP_Error_Forward_declared_class_as_base_class
  • Forward_Class_Declaration_in_CPP
  • Namespaces_Splitting
  • The_Curiously_Recurring_Template_Pattern_in_CPP_Eli_Bendersky-Comparisons
  • Linker_error_Undefined_reference_Different_definition_Fix_declaration
  • What_the_CRTP_can_bring_to_your_code-Adding_Functionality
  • Instance_ownership_Nobody_owns_the_instance
  • Shapes_Templated_factory_Smart_pointers_CRTP
  • CPP-Visual_Studio_Projects-from_FRI_UNIZA
  • Parentheses_around_return_value_CPP14
  • unique_ptr_example
  • Combining_Static_and_Dynamic_Polymorphism_with_CPP_Mixin_classes-Part_1-The_Problem
  • Namespaces_Using_declaration
  • Type_Punning_aka_Aliasing_With_struct_TheCherno
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function
  • codewars
  • Instance_ownership_Ownership_of_instance_is_shared_among_multiple_owners_Alternative
  • UniquePtrCustomDeletersMoreExpressive
  • Instance_ownership_Other_object_owns_the_instance_Instance_can_live_shorter_than_owner_Alternative
  • Alignment_alignof_sizeof
  • PolymorphicClone-ClassicalSolution
  • PolymorphicClone_CovariantUniquePtr_SimpleHierarchy
  • set-find
  • Linkage_internal_multiple_static_functions_with_same_name
  • Value_of_nth_bit_in_number_algorithm
  • Linker_error_Undefined_reference_Different_definition
  • Endianness_Little_endian_Big_endian
  • CRTP_class
  • Covariance_Concrete_factory
  • Strict_Aliasing_Rule_example_4_Solution_Union
  • Header_guards_omitted
  • ObjectSlicing
  • Design_Patterns_CPP
  • CopyObjectWithUniquePtrMemberVarWithInheritance
  • Header_guards_With_pragma_once
  • Mixin_class_with_association_instead_of_inheritance
  • FunctionPointers
  • Shapes_Templated_factory_Smart_pointers_Refactoring_with_packages_and_namespaces
  • Covariance_Replacing_static_casts
  • Partial_Template_Specialization
  • Introduction_to_CPP_Variadic_Templates
  • decimal_to_binary_converter
  • Namespaces_Clash
  • An_Implementation_Helper_For_The_Curiously_Recurring_Template_Pattern-Getting_rid_of_static_cast
  • Member_variable_rodeo
  • Strict_Aliasing_Rule_example_1
  • Callback-Simple_Observer-Single_Receiver
  • An_Implementation_Helper_For_The_Curiously_Recurring_Template_Pattern_Adding_several_functionalities_with_CRTP-each_functionality_in_separate_CRTP_class
  • Instance_ownership_Ownership_of_instance_is_shared_among_multiple_owners
  • Type_Punning_aka_Aliasing
  • Namespaces_ADL_Argument_Dependent_Lookup
  • Streams
  • Type_Punning_aka_Aliasing_Solution_union
  • Namespace_Variable_initialization
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance_The_CPP03_solution
  • Implicit_Conversion_and_the_Explicit_Keyword_in_CPP_Implicit_conversion
  • CPP-Project_skeleton
  • PolymorphicClone_CovariantUniquePtr_SimpleHierarchy_CRTP
  • Stroustrup_Why_dont_we_have_virtual_constructors_Abstract_factory_Template_arguments
  • Breaking_external_linkage
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_deep_hierarchy_The_CPP11_solution
  • Namespaces_Aliasing
  • udemy-mastering_object_oriented_design_in_java-14-single_responsibility_principle-SRP-Refactored
  • ChangingUniquePtrDeletersAtRuntime
  • Linkage_internal_Static_functions
  • PolymorphicClone_CovariantUniquePtr_MultipleInheritance_CRTP_TemplateSpecialization
  • Partial_Template_Specialization_With_Common_Base_Class
  • Constructor_inheritance_CPP11_Solution
  • Constructor_delegation_The_Solution_Multiple_Constructors
  • Linkage_external_extern
  • weak_ptr_example_Alternative
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP
  • Forward_Class_Declaration_in_CPP_Error_Using_methods_or_fields_of_incomplete_type
  • Linkage_internal_static_member_variable
  • PIMPL_Idiom_Unique_pointer_Even_more_expressive_before_and_after
  • initializing_member_variable_in_abstract_class_from_its_derived_class
  • Strict_Aliasing_Rule_example_3
  • VariadicFunctions
  • Exceptions
  • shared_ptr_cyclic_dependency
  • Shapes_Templated_factory
  • Header_guards_multiple_includes_of_same_header
  • CRTP-Plugging_a_generic_functionality_over_your_type
  • Linkage_internal
  • CPP_Polymorphic_cloning_and_the_CRTP_The_Problem
  • Linker_error_Undefined_reference_No_definition
  • PolymorphicClone_CovariantUniquePtr_SingleInheritance_DeepHierarchy_CRTP_TemplateSpecialization
  • Sharing_with_temporary_ownership_weak_ptr_shared_ptr_example
  • Linkage_Custom_namespace
  • Bitwise_and_logical_operators
  • rename_photos_to_unique_format
  • Combining_Static_and_Dynamic_Polymorphism_with_CPP_Mixin_classes_Part_3_Polymorphic_mixin_class
  • default_values_for_member_variables
  • Sharing_with_temporary_ownership_weak_ptr_example
  • Namespaces_Using_directive
  • PolymorphicClone_CovariantUniquePtr_MultipleInheritance_CRTP
  • Convert_number_to_binary-algorithm
  • Breaking_external_linkage_Fix_with_classes_or_structs
  • const_member_variable
  • Anonymous_namespace
  • Implicit_Conversion_and_the_Explicit_Keyword_in_CPP_Explicit_keyword
  • Translation_unit
  • Linker_error_Undefined_reference_No_definition_Fix
  • CopyObjectWithUniquePtrMemberVar
  • shared_ptr_example
  • STL
  • CPP_11_new_features
  • OperatorOverloading
  • Constructor_delegation_The_Problem_Basic_Constructor
  • Shapes_Templated_factory_CRTP
  • Forward_Class_Declaration_in_CPP_Error_Define_functions_that_use_incomplete_type_by_value
  • Reverse_bytes_in_number_algorithm
  • The_Curiously_Recurring_Template_Pattern_in_CPP_Eli_Bendersky_TreeNodeVisitor_modification
  • Smart_Pointers_Playground
  • Stroustrup_Why_dont_we_have_virtual_constructors_Abstract_factory_Smart_pointers
  • shared_ptr_cyclic_dependency_solution
  • Namespaces_Variables_with_same_name_different_type
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_deep_hierarchy_The_CPP11_solution-Revision
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance_The_CPP11_solution
  • PolymorphicClone_CovariantUniquePtr_MultipleInheritance_DeepHierarchy_DiamondProblem_CRTP_PartialTemplateSpecialization
  • Design_patterns-Adapter-Motivation
  • Templates
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance_Constructor_forwarding_problem_A horrible workaround
  • SharedWeakPtrsCyclicDependency
  • The_cost_of_dynamic_virtual_calls_vs_static_CRTP_dispatch_in_CPP_Eli_Bendersky
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance_Constructor_forwarding_problem
  • Namespace_Standard_namespace_std
  • Header_guards_two_headers_with_same_name
  • Alignment_Pragma_pack_Attribute_packed_Alignof_Sizeof_Alignas
  • Constructor_inheritance
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance_The_CPP11_solution_Example
  • Covariance_Replacing_static_casts_with_unique_ptr
  • Safe_Typecasting_CPP
  • Linkage_internal_extern_and_static_function_with_same_name
  • Combining_Static_and_Dynamic_Polymorphism_with_CPP_Mixin_classes_Part_2-Mixin_class
  • const_member_variable-static
  • PolymorphicClone_ClassicalSolutionMultipleInheritance
  • Namespaces_Local_nested_scopes
  • Stroustrup_Why_dont_we_have_virtual_constructors_Abstract_factory
  • UndefinedBehavior
  • Tetris
  • The_Curiously_Recurring_Template_Pattern_in_CPP_Eli_Bendersky-TreeNodeVisitor
  • CPP_Polymorphic_cloning_and_the_CRTP_Virtual_clone_function_through_CRTP_in_multiple_inheritance
  • Shapes_Templated_factory_Refactoring_with_packages_and_namespaces
  • Header_guards_Without_pragma_once
  • CPP_Memory_layout_Variable_memory_locations
  • UniquePtrCustomDeleter
  • CRTP_Definition
  • Struct_with_and_without_typedef
  • External_linkage_usage
  • Namespaces_Validity_of_using_keyword_as_declaration_and_directive
  • Type_Punning_aka_Aliasing_TheCherno
  • Design_patterns-Adapter-implemented_as_Object_Adapter
  • Forward_Class_Declaration_in_CPP_Error_Object_Member_Variable_in_Class
  • What_the_CRTP_can_bring_to_your_code_Static_Interfaces
  • PolymorphicClone_ModernSolution
  • C_style_cast_in_CPP_broken
  • mixin_class_exercise
  • CPP_Memory_layout_Inheritance
  • Constructor_delegation_The_Problem_Multiple_Constructors
  • Mixin_class-Plugging_a_generic_functionality_over_your_type
  • PolymorphicClone-TheProblem
  • Namespaces_CPP
  • Stroustrup_Why_dont_we_have_virtual_constructors_Abstract_factory_Refactoring
  • PIMPL_Idiom_Raw_pointer_before_and_after
  • Instance_ownership_Other_object_owns_the_instance_Instance_can_live_shorter_than_owner_Weak_ptr_in_vector
  • Linker_error_Undefined_reference_Didnt_link_object_file
  • Namespaces_Scopes
  • udemy-mastering_object_oriented_design_in_java-14-single_responsibility_principle-SRP
  • Sharing_with_temporary_ownership_weak_ptr_Memory_clean
  • Strict_Aliasing_Rule_example_2
  • Static_member_variable_rodeo

About

Educational and experimental projects intended to play with C and C++

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published