• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:constについて)

C++のconstについて

このQ&Aのポイント
  • C++のconstキーワードについて質問です。
  • 具体的には、何時にconstを定義するべきかと、なぜconstが必要なのかについて教えてください。
  • また、コードの中に現れる(!!!!)や(????)についても理解しておきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> 厳密な型宣言のため > const int &operator()(unsigned int i) const{return x[i];}//???? > の中の後ろのconstはいると思うのですが > 前のconstはいるのでしょうか? なかったらとてもヤバいことがおこります。 const I a(5); a(1) = 3; // a は const のはずなのに、中身が書き換わる!! >> 大抵の参考書に書いてあると思うがなぁ: > なにせまだ規格が流動的でSTLが規格になっていないときの本なのでだいぶ抜けているのです ならば参考書買い替えの時期では? それにこの件に関する限り、STLとは何の関係もありません。

nubou
質問者

お礼

確認しました STLについては古いことを説明するために出したもので他意はありません ありがとうございました

その他の回答 (1)

回答No.1

> //????を定義することがありますがどんな場合でしょう const I a; に対し a(i) したいとき。 > //!!!!があるのにあったほうがいいのはどんな場合でしょう? a(i)に対して代入することで、a.x[i]を書き換えたいとき。 # 大抵の参考書に書いてあると思うがなぁ...

nubou
質問者

補足

厳密な型宣言のため const int &operator()(unsigned int i) const{return x[i];}//???? の中の後ろのconstはいると思うのですが 前のconstはいるのでしょうか? 大抵の参考書に書いてあると思うがなぁ: なにせまだ規格が流動的でSTLが規格になっていないときの本なのでだいぶ抜けているのです 説明を簡単時するために最小限の記述にしましたが下が全体像です sizeを変更できないようにpribateにしてgetsize()なる関数を定義すべきですが・・・・ #include <iostream> using namespace std; class I { int *x; public: int size; I(){size=0;x=new int[size];} I(int i){size=i;x=new int[size];} I(const I &a) { if(size)delete []x;size=a.size;x=new int[size]; for(int i=0;i<size;i++)x[i]=a(i); } ~I(){delete []x;} I &operator=(const I &a) { if(size)delete []x;size=a.size;x=new int[size]; for(int i=0;i<size;i++)x[i]=a(i);return *this; } int &operator()(int i){return x[i];}//!!!! const int &operator()(int i) const{return x[i];}//???? }; ostream &operator<<(ostream &cout,const I &a) {for(int i=0;i<a.size;i++)cout<<a(i);cout<<"\n";return cout;} void main() { I a(10),b,c; for(int i=0;i<a.size;i++)a(i)=i;a(2)=a(0); cout<<a<<b<<c;cout<<a;c=b=a;cout<<a<<b<<c; }

関連するQ&A