龍神録プログラミングの館2について_C++基礎

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 龍神録プログラミングの館2について_C++基礎

Re: 龍神録プログラミングの館2について_C++基礎

#4

by にこよん » 6年前

もやもやがすべて彼方へと吹き飛びました。

とても分かりやすい説明ありがとうございました!!

Re: Rittai_3D様

#3

by にこよん » 6年前

constの分かりやすい説明ありがとうございました。
とても分かりやすかったです。

上二つはいただいた情報をもとに勉強してきます。
ありがとうございました!!

Re: 龍神録プログラミングの館2について_C++基礎

#2

by Rittai_3D » 6年前

1. https://cpprefjp.github.io/lang/cpp11/d ... tions.html
「default 指定子」で検索してみてください。
コンパイラがコンストラクタ/デストラクタを自動生成することを明示します。

2. 「デストラクタ」で検索してみてください。
オブジェクトが解体されるときに呼ばれます。参考
わかりやすいように一つ余分にブロックを追加しています。

コード:

#include <iostream>

class test
{
public:

	test()
	{
		std::cout << "constructor" << std::endl;
	}
	
	~test()
	{
		std::cout << "destructor" << std::endl;
	}
};

int main()
{
	{
		test t;
	} // ここでデストラクタが呼び出される
}
3. 4.

コード:

#include <iostream>

class test
{
	int m_value;
	
public:

	test() : m_value( 42 ) {}
	
	int get() const
	{
		m_value *= 2; // 変数に変更を加えようとするとError
		return m_value;
	}
};

int main()
{
	test t;
	t.get();
}
参考
このように、constメンバ関数内でデータメンバを書き換えられないようにするものです。
getterのように、書き換える必要がない/書き換えてはいけない関数にconstをつけます。

C++にあまり精通していないので間違えたことを言っていたら申し訳ないです。

龍神録プログラミングの館2について_C++基礎

#1

by にこよん » 6年前

こんばんは、いつもお世話になってます。

C++を入門サイトで勉強したのち、竜神録2に来たのですが、
入門サイトと、竜神録2プログラミングの館で分からないことがいくつかあったので質問させていただきます。
説明していただけるとありがたいですが、ググっても分からなかったものなので
こういう単語でググれば出てくるよ、等の助言でも助かります。


龍神録2の3章のコード↓からなのですが

コード:

#pragma once
class SystemMain final
{
public:
	SystemMain() = default;
	~SystemMain() = default;
	bool initialize() const;
	void finalize() const;
	void main() const;
};
1. = defaultは何のためについているのか、どういった意味があるのか

2. ~SystemMain()に書いてある「~」はどういう意味があるのか。または調べ方

3. void main() const の「const」は書き換えた時にコンパイルエラーを起こすためにつけているのだと書いてあったが(入門サイトに)
変数ではなくクラスの中にある関数なのに書き換わることができる?
このconstがあることによってどのような場合にエラーが起きるのか、
4. また、このconstがなければどのように書き換えることができるのか。

1つだけでもご教示願います。

ページトップ