From a450487a18ec72ea3a3815bfaf17b2f701796b6f Mon Sep 17 00:00:00 2001 From: Oskar Date: Wed, 31 Jul 2024 17:09:45 +0200 Subject: more --- .idea/.gitignore | 8 ----- .idea/editor.xml | 103 ----------------------------------------------------- .idea/misc.xml | 18 ---------- .idea/vcs.xml | 6 ---- 2p32.cpp | 7 ++-- 2p33-2p34.cpp | 47 ++++++++++++++++++++++++ 2p35.cpp | 28 +++++++++++++++ 2p36.cpp | 22 ++++++++++++ 2p37.cpp | 24 +++++++++++++ 2p38.cpp | 28 +++++++++++++++ auto-test.cpp | 30 ++++++++++++++++ decltype-tests.cpp | 28 +++++++++++++++ 12 files changed, 211 insertions(+), 138 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/editor.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml create mode 100644 2p33-2p34.cpp create mode 100644 2p35.cpp create mode 100644 2p36.cpp create mode 100644 2p37.cpp create mode 100644 2p38.cpp create mode 100644 auto-test.cpp create mode 100644 decltype-tests.cpp diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/editor.xml b/.idea/editor.xml deleted file mode 100644 index 855412d..0000000 --- a/.idea/editor.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 53624c9..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/2p32.cpp b/2p32.cpp index 1e7211f..5fa6c3e 100644 --- a/2p32.cpp +++ b/2p32.cpp @@ -3,14 +3,15 @@ /* * - * 2.32 + * exersice 2.32 c++ primer * * */ int main () { - int null = 0, *p = null; - std::cout << null << " " << *p << std::endl; + int null1 = 0, *p1 = &null1; // Add a & ? + std::cout << null1 << " " << *p1 << std::endl; + return 0; } diff --git a/2p33-2p34.cpp b/2p33-2p34.cpp new file mode 100644 index 0000000..bc16416 --- /dev/null +++ b/2p33-2p34.cpp @@ -0,0 +1,47 @@ +#include +#include "sales_item.hpp" + +/* + * + * 2.33, 2.34 + * + * + */ + +int main () { + + int i = 0, &r = i; + const int ci = i, &cr = ci; + + auto a = r; // int + auto b = ci; // int + auto c = cr; // int + auto d = &i; // int * + auto e = &ci; // const int * + const auto f = ci; // const int + auto &g = ci; // const int & + std::cout << a << " " << b << " " << c << " " << d << " " + << e << " " << f << " " << g << std::endl; + + a = 42; // valid + std::cout << a << std::endl; + + b = 42; // valid + std::cout << a << std::endl; + + c = 42; // valid + std::cout << a << std::endl; + + //d = 42; // inValid + //std::cout << a << std::endl; + + //e = 42; // inValid + //std::cout << a << std::endl; + + //f = 42; // inValid + //std::cout << a << std::endl; + + //g = 42; // inValid + //std::cout << a << std::endl; + return 0; +} diff --git a/2p35.cpp b/2p35.cpp new file mode 100644 index 0000000..ce34e47 --- /dev/null +++ b/2p35.cpp @@ -0,0 +1,28 @@ +#include +#include "sales_item.hpp" + +/* + * + * 2.35 + * + * + */ + +int main () { + + const int i = 42; // const int + auto j = i; // int + const auto &k = i; // const int& + auto *p = &i; // pointer to const int? (const int*) or pointer to pointer? + auto p2 = &i; + const auto j2 = i, &k2 = i; + // const int // reference to const int (const int&) + std::cout << i << "\n" + << j << "\n" + << k << "\n" + << p << "\n" + << p2 << "\n" + << j2 << "\n" + << k2 << std::endl; + return 0; +} diff --git a/2p36.cpp b/2p36.cpp new file mode 100644 index 0000000..73f02b7 --- /dev/null +++ b/2p36.cpp @@ -0,0 +1,22 @@ +#include +#include "sales_item.hpp" + +/* + * + * 2.36 + * + * + */ + +int main () { + + int a = 3; + int b = 4; + decltype(a) c = a; // int // c == 3 + decltype((b)) d = a; // int& // d == 3 + ++c; // 4 + ++d; // 4 + std::cout << c << " +#include "sales_item.hpp" + +/* + * + * 2.37 + * + * + */ + +int main () { + + int a = 3; + int b = 4; + decltype(a) c = a; //int + //decltype(a = b) d = a; // int& + std::cout << a << " " + << b << " " + << c << " " + //<< d << " " + < +#include "sales_item.hpp" + +/* + * + * 2.38 + * auto ignores toplevel const and reference + * decltype included toplevel const and reference + */ + +int main () { + + int i = 109; //int + int *pi = &i; //int* + const int ff = 1; // const int + + auto ffi = ff; //int + decltype(ff) ffd = 100; //const int + auto ai = *pi; // int + decltype(*pi) di = i; //int& + + std::cout << ai << " " // 109 + << di << " " // 109 + << ffi << " " // 1 + << ffd << " " // 100 + << std::endl; + return 0; +} diff --git a/auto-test.cpp b/auto-test.cpp new file mode 100644 index 0000000..919e1e4 --- /dev/null +++ b/auto-test.cpp @@ -0,0 +1,30 @@ +#include +#include "sales_item.hpp" + +/* + * + * testing with auto + * + * + */ + +int main () { + + double ff = 3.14; + auto i = 0, *p = &i; + auto i2 = 0.0, i3 = ff; + std::cout << i << " " << *p << " " << i2 << " " << i3 << std::endl; + const int gg = 66; + const auto pgg = ≫ // if we want toplevel const then we have to say it before auto + std::cout << gg << " +#include "sales_item.hpp" + +/* + * + * decltype testing + * + * + */ + +int main () { + + int i = 100; + int &ii = i; + int *iii = &i; + + decltype(i) dti = 101; //int + decltype(ii) dtii = dti; //int& + decltype(ii + 0) dtii2 = 102; //int + decltype(*iii) dtiii = i; //int& + decltype(*iii + 0) dtiii2 = i; //int + std::cout << dti << " " // Will print 101 + << dtii << " " // Will print 101 + << dtii2 << " " // Will print 102 + << dtiii << " " // Will print 100 + << dtiii2 << " " << std::endl; // Will print 100 + return 0; +} -- cgit v1.2.3