Nec C++ Quiz — 0045

According to the C++17 standard

  • The program has a compile-time error.
  • The program has unspecified/implementation-defined behavior.
  • The program has undefined behavior.
  • The program is guaranteed to output:


Nec C++ Quiz — 0044

There are 2 function calls to f in the function main. Which calls are valid?


Nec C++ Quiz — 0043

There are 6 function calls to f in the main function. Which calls are valid?


resim: Hunters in the snow (Pieter Bruegel)

C++11 standartları ile kapatılan eksikliklerden biri de next ve prev fonksiyon şablonları. İteratör’ler üzerinde çalışan bu fonksiyonarı anlayabilmek için önce ihtiyaç noktasını görmemiz gerekiyor. Elimizde aşağıdaki gibi bir kap olsun:

std::vector<int> ivec(100);

Bu kabın tuttuğu tüm öğeler üstünde bir algoritmayı koşturmak için begin ve end fonksiyonlarından alacağımız iteratörleri kullanmamız gerekir…


Nec C++ Quiz — 0042

According to the C++17 standard

  • The program has a compile-time error.
  • The program has unspecified/implementation-defined behavior.
  • The program has undefined behavior.
  • The program is guaranteed to output:

C++ dilinde taban sınıfların saf sanal işlevleri (pure virtual functions) kalıtım yoluyla elde edilecek sınıflara bir arayüz (interface) sunan ancak bir kod sağlamayan operasyonları temsil ediyor. En az bir saf sanal işleve sahip olan sınıflar soyut (abstract) olarak nitelendiriliyor. Soyut sınıflar türünden nesneler oluşturamıyoruz. Bu sınıfları yalnızca gösterici ve referans…


C++11 öncesinde bir türe eş isim (type alias) oluşturmanın tek yolu C’den gelen typedef bildirimleriydi:

#include <vector>
#include <string>
typedef int Word;
typedef int *Iptr;
typedef int SMatrix10[10][10];
typedef int(*Fptr)(int, int);
typedef const std::vector<std::string> Csvec;

C++11 standartları ile türlere eş isim oluşturmak için ikinci bir araç daha geldi. Artık eş…


C++17 standartları ile gelen yeni özelliklerin hemen hepsi yaygın kullanımda olan derleyiciler tarafından gerçekleştirilmiş (implemente edilmiş) durumda. Bu yeni özelliklerden biri de içsel isim alanlarının (nested namespaces) bildirimine ilişkin:

Yazdığımız bir oyun programında kullanılan bir isim alanına bakalım:

namespace Csd {
namespace Game {
namespace Models {…

next ve prev isimli fonksiyon şablonları standart kütüphaneye C++11 standartları ile eklendi. İteratörler üzerinde çalışan bu fonksiyonlara neden ihtiyaç duyuluyor? Elimizde aşağıdaki gibi bir kap (container) olsun:

std::vector<int> ivec(100);

Bu kabın tuttuğu tüm öğeler üstünde bir algoritmayı koşturmak için begin ve end işlevlerinden alacağımız iteratörleri kullanmamız gerekir, değil mi?

for_each(ivec.begin()…

Başlık başlangıçta size biraz anlamsız gelmiş olabilir. Bu cümle kalıtımda taban sınıf olarak kullanılacak sınıfların sonlandırıcı işlevlerine (destructors) ilişkin Herb Sutter tarafından formüle edilmiş ve genel kabul görmüş bir ilkeyi anlatıyor. Cümlemizin ingilizcesini yazalım önce:

A base class destructor should be either public and virtual or protected and nonvirtual

Bir…

Necati Ergin

C & C++ Instructor

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store