effecitve c++のconst
effective c++を見たことのある人なら誰でも知っていますが、この本はc++言語の細部を尽くしているので、個人的にはこの本はよく書けていると思いますが、言語の細部を追求しすぎて、c++という言語自体に多くの弊害があると思われますか?
ある面接官が私に「constはc++の中でどんな役割を果たしているのか」と聞いたのを覚えています.これをまとめてみます
1.定数の定義
定数を定義するには、マクロ、const、enumの3つの方法があります.マクロはできるだけ避けるべきです.マクロ定義の定数にはタイプ情報がありません.コンパイラは厳密なタイプチェックを行いません.enumは整数を定義するためにのみ使用できます.
2.cosntとポインタの関係は大体4つあります
const int *p;//p++,p--のようなことができて、pの値は可変で、*pは可変ではありません
int const *p;//同上
int *const p;//p++,p--などはできません.すなわち、pの値は可変ではありません.*pは可変です.
cosnt int *const p;どちらの場合もだめです
3.const修飾クラスのメンバー関数
ここでは、2つのケースに細分化されています.
(1)const修飾メンバー関数はクラスのメンバー変数を変更できません
(2)constオブジェクトはconstメンバー関数のみにアクセスできる
4.constはSTLで使用
STLの反復器は実はT*タイプのポインタで、通常は次の2種類に分けられます.
実はconstの使い方は以上のいくつかだけではありませんが、これらのいくつかはよく見られ、多くの細部もコンパイラによって変わり、具体的な状況は具体的に扱われています.
ある面接官が私に「constはc++の中でどんな役割を果たしているのか」と聞いたのを覚えています.これをまとめてみます
1.定数の定義
定数を定義するには、マクロ、const、enumの3つの方法があります.マクロはできるだけ避けるべきです.マクロ定義の定数にはタイプ情報がありません.コンパイラは厳密なタイプチェックを行いません.enumは整数を定義するためにのみ使用できます.
#include <iostream>
using namespace std;
int main()
{
const int c=1;//
const int*cc = &c;// const ,
cout<<"cc="<<*cc<<endl;
return 0;
}
2.cosntとポインタの関係は大体4つあります
const int *p;//p++,p--のようなことができて、pの値は可変で、*pは可変ではありません
int const *p;//同上
int *const p;//p++,p--などはできません.すなわち、pの値は可変ではありません.*pは可変です.
cosnt int *const p;どちらの場合もだめです
3.const修飾クラスのメンバー関数
ここでは、2つのケースに細分化されています.
(1)const修飾メンバー関数はクラスのメンバー変数を変更できません
class Student
{
private:
int num;
public:
Student(int number);
int GetNum() const;
};
Student::Student(int number)
:num(number)
{
}
int Student::GetNum() const
{
return num;// num
}
(2)constオブジェクトはconstメンバー関数のみにアクセスできる
4.constはSTLで使用
STLの反復器は実はT*タイプのポインタで、通常は次の2種類に分けられます.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
for(int i=0; i < 10; i++)
ivec.push_back(i);
const vector<int>::iterator iter1=ivec.begin();
vector<int>::const_iterator iter2=ivec.begin();
while(iter2 != ivec.end())
{
cout<<*iter2<<endl;
iter2++;//iter2 const int *p,iter1 int *const p
}
return 0;
}
実はconstの使い方は以上のいくつかだけではありませんが、これらのいくつかはよく見られ、多くの細部もコンパイラによって変わり、具体的な状況は具体的に扱われています.