Skip to content

Commit

Permalink
soru35, ipucu7 eklendi
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmetveburak committed Apr 30, 2021
1 parent f3e797c commit 897953e
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 0 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
- [Günün Sorusu 030](gunun-sorusu.md#günün-sorusu-030)
- [Günün Sorusu 031](gunun-sorusu.md#günün-sorusu-031)
- [Günün Sorusu 032](gunun-sorusu.md#günün-sorusu-032)
- [Günün Sorusu 033](gunun-sorusu.md#günün-sorusu-033)
- [Günün Sorusu 034](gunun-sorusu.md#günün-sorusu-034)
- [Günün Sorusu 035](gunun-sorusu.md#günün-sorusu-035)

# C++ İpuçları

Expand All @@ -47,5 +50,6 @@
- [C++20 ipuçları 004](cpp-ipuclari.md#c20-ipuçları-004)
- [C++20 ipuçları 005](cpp-ipuclari.md#c20-ipuçları-005)
- [C++20 ipuçları 006](cpp-ipuclari.md#c20-ipuçları-006)
- [C++20 ipuçları 007](cpp-ipuclari.md#c20-ipuçları-007)


22 changes: 22 additions & 0 deletions cpp-ipuclari.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- [C++20 ipuçları 004](#c20-ipuçları-004)
- [C++20 ipuçları 005](#c20-ipuçları-005)
- [C++20 ipuçları 006](#c20-ipuçları-006)
- [C++20 ipuçları 007](#c20-ipuçları-007)


### [C++20 ipuçları 001](https://t.me/trcpp/9585)
Expand Down Expand Up @@ -135,4 +136,25 @@ int main() {
Nec mynec;
std::cout << mynec.x << mynec.y;
}
```
### [C++20 ipuçları 007](https://t.me/trcpp/10295)
Kapsamlı numaralandırma türleri *(scoped enums) C++11* standartları ile dile eklenmişti. Kapsamlı numaralandırma türlerinin kullanımı ile daha güvenli kodlar oluşturabiliyoruz. Ancak kapsamlı numaralandırma sabitlerinin *(enumaration constants)* özellikle yerel *(local)* kod alanlarında yoğun kullanımı kod kalabalığı *(verbose code)* oluşturabiliyor. *C++20* standartları ile artık numaralandırma türleri ya da numaralandırma sabitleri için *using* bildirimi yapabiliyoruz. Böylece *using* bildiriminin yapıldığı kapsamda *(scope)* numaralandırma sabitlerini çözünürlük operatörü *(scope resolution operator)* olmadan kullanabiliyoruz.
```cpp
enum class suit { club, diamond, heart, spade };
enum class face { two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace };
void f(suit s, face f) {
using enum suit; // enum class icin using bildirimi
using face::ace, face::king; // enumarator'ler icin using bildirimi
if (s == suit::heart) s = suit::spade; // C++20 oncesinde
if (s == heart) s = spade; // C++20
if (f == face::king) f = face::ace; // C++20 oncesinde
if (f == king) f = ace; // C++20
// if (f == four) f = five; // C++20'de de gecersiz
}
```
88 changes: 88 additions & 0 deletions gunun-sorusu.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
- [Günün Sorusu 030](#günün-sorusu-030)
- [Günün Sorusu 031](#günün-sorusu-031)
- [Günün Sorusu 032](#günün-sorusu-032)
- [Günün Sorusu 033](#günün-sorusu-033)
- [Günün Sorusu 034](#günün-sorusu-034)
- [Günün Sorusu 035](#günün-sorusu-035)


### [Günün Sorusu 001](https://t.me/trcpp/8766)
Expand Down Expand Up @@ -802,4 +805,89 @@ int main() {
std::cout << (++x || --y && --z);
std::cout << x << y << z;
}
```

### [Günün Sorusu 033](https://t.me/trcpp/10283)
- C++17 standartlarına göre aşağıdaki kodda\
a) Sentaks hatası var.\
b) Tanımsız davranış (undefined behavior) var.\
c) Belirlenmemiş davranış (unspecified behavior) var.\
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:

```cpp
#include <iostream>

struct Nec {
Nec() { std::cout << "c"; }
~Nec() { std::cout << "d"; }
};

int i{2};

int main() {
switch (i) {
while (i) {
case 2:
Nec x;
--i;
}
}
}
```
### [Günün Sorusu 034](https://t.me/trcpp/10315)
- C++17 standartlarına göre aşağıdaki kodda\
a) Sentaks hatası var.\
b) Tanımsız davranış (undefined behavior) var.\
c) Belirlenmemiş davranış (unspecified behavior) var.\
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
```cpp
#include <iostream>
int g{1};
void f() { std::cout << 2; }
template <typename T>
struct Base {
int g = 3;
void f() const { std::cout << 4; }
};
template <typename T>
struct Der : Base<T> {
void foo() const {
std::cout << g;
f();
}
};
int main() {
Der<int> myder;
myder.foo();
}
```


### [Günün Sorusu 035](https://t.me/trcpp/10359)
- C++17 standartlarına göre aşağıdaki kodda\
a) Sentaks hatası var.\
b) Tanımsız davranış (undefined behavior) var.\
c) Belirlenmemiş davranış (unspecified behavior) var.\
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:

```cpp
#include <iostream>
#include <sstream>

int main() {
std::ostringstream ss{"1"};
ss << "2";
std::cout << ss.str();
ss << "3";
ss << ss.str();
std::cout << ss.str();
}
```

0 comments on commit 897953e

Please sign in to comment.