#include <iostream>
using namespace std;
class T1
{
const int t = 100;
public:
T1()
{
cout << "T1 constructor: " << t << endl;
}
};
const üye değişkenini t
100 ile başlatmaya çalıştığımda. Ama bana aşağıdaki hatayı veriyor:
test.cpp:21: error: ISO C++ forbids initialization of member ‘t’
test.cpp:21: error: making ‘t’ static
Bir const
değerini nasıl başlatabilirim?
Const` değişkeni bir değişkenin değiştirilebilir olup olmadığını belirtir. Atanan sabit değer, değişkene her başvurulduğunda kullanılacaktır. Atanan değer programın yürütülmesi sırasında değiştirilemez.
Bjarne Stroustrup'un açıklaması bunu kısaca özetliyor:
Bir sınıf tipik olarak bir başlık dosyasında bildirilir ve bir başlık dosyası tipik olarak birçok çeviri birimine dahil edilir. Ancak, karmaşık bağlayıcı kurallarından kaçınmak için, C++ her nesnenin benzersiz bir tanımı olmasını gerektirir. Eğer C++ bellekte nesne olarak saklanması gereken varlıkların sınıf içinde tanımlanmasına izin verseydi bu kural bozulurdu.
Bir const
değişkeni sınıf içinde bildirilmelidir, ancak sınıf içinde tanımlanamaz. const değişkenini sınıfın dışında tanımlamamız gerekir.
T1() : t( 100 ){}
Burada t = 100
ataması, sınıf başlatma işlemi gerçekleşmeden çok önce başlatıcı listesinde gerçekleşir.