「C++とは」の編集履歴(バックアップ)一覧はこちら
C++とは - (2008/12/14 (日) 02:41:51) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
C++(シープラスプラス)は、C言語をベースに、オブジェクト指向等の機能を追加した言語です。
&bold(){目次}
#contents()
*公開時期
1983年
*概要
-AT&Tベル研究所のBjarne Stroustrup(ビャーネ・ストロヴストルップ)により開発された
-C言語をベースに、Simulaのクラス機能を追加したプログラミング言語
-C++の言語仕様はC言語の上位互換になっている
-言語開発中の名前はC With Classes
*言語仕様
**クラスの宣言
#highlight(cpp){{
class MyClass
{
};
}}
**クラスの継承
#highlight(cpp){{
class Base
{
};
class MyClass : Base
{
};
}}
**クラスの多重継承
#highlight(cpp){{
class Base1
{
public:
void Func()
{
}
};
class Base2
{
public:
void Func()
{
}
};
class MyClass : public Base1,public Base2
{
};
void main()
{
MyClass* pmc = new MyClass();
//あいまいさの解決にはスコープ演算子::を使用する
pmc->Base1::Func();
pmc->Base2::Func();
//以下はコンパイルエラーとなる
//pmc->Func();
delete pmc;
}
}}
**仮想基本クラス
#highlight(cpp){{
class Base1
{
public:
void Func()
{
}
};
//virtualをつけ仮想基本クラスとしてBase1を継承
class Base2 : virtual public Base1
{
};
//virtualをつけ仮想基本クラスとしてBase1を継承
class Base3 : virtual public Base1
{
};
class MyClass : public Base2 , public Base3
{
};
void main()
{
MyClass* pmc = new MyClass();
//virtualがないと以下はコンパイルエラーとなる
pmc->Func();
delete pmc;
}
}}
**抽象クラス
#highlight(cpp){{
//抽象クラス
class AbstractClass
{
public:
//純粋仮想関数
virtual void func() = 0;
};
class MyClass : AbstractClass
{
public:
void func()
{
}
};
void main(){
MyClass* pmc = new MyClass();
pmc->func();
delete pmc;
//抽象クラスはインスタンス生成出来ない
//AbstractClass* pac = new AbstractClass();
}
}}
**コンストラクタ、デストラクタ
#highlight(cpp){{
class MyClass
{
public:
//コンストラクタの宣言
MyClass();
//デストラクタの宣言
~MyClass();
};
//コンストラクタの定義
MyClass::MyClass()
{
}
//デストラクタの定義
MyClass::~MyClass()
{
}
}}
**オブジェクトの生成
#highlight(cpp){{
class MyClass
{
public:
MyClass();
~MyClass();
void Func();
};
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
void MyClass::Func()
{
}
void main()
{
//静的確保
//確保時にコンストラクタが呼ばれ、スコープを抜けた時にデストラクタが呼ばれる
MyClass mc;
mc.Func();
//動的確保
//確保時にコンストラクタが呼ばれ、deleteでデストラクタが呼ばれる
MyClass *pmc = new MyClass();
pmc->Func();
delete pmc;
}
}}
**関数のオーバーライド
#highlight(cpp){{
class base
{
public:
//仮想関数
virtual void Func()
{
}
};
class MyClass : public base
{
public:
void Func()
{
}
};
}}
**関数のオーバーロード
#highlight(cpp){{
class MyClass
{
public:
void Func(int x)
{
}
void Func(int x,int y)
{
}
};
}}
**テンプレート関数
#highlight(cpp){{
#include<iostream>
using namespace std;
template<class T> T Add(T x,T y)
{
return x + y;
}
void main()
{
//int Add(int,int)となる
cout << Add(1,2);
//double Add(double,double)となる
cout << Add(1.1,1.2);
//コンパイルエラー
//cout << Add(1,1.1);
//double Add(double,double)となる
cout << Add<double>(1.1,1);
}
}}
**例外処理
#highlight(cpp){{
#include<iostream>
using namespace std;
void main()
{
try
{
//例外を監視するブロック
throw "Exception"; //例外の発生
}
catch(char *str)
{
//例外時の処理を記述するブロック
cout << str;
}
}
}}
C++(シープラスプラス)は、C言語をベースに、オブジェクト指向等の機能を追加した言語です。
&bold(){目次}
#contents()
*公開時期
1983年
*概要
-AT&Tベル研究所のBjarne Stroustrup(ビャーネ・ストロヴストルップ)により開発された
-C言語をベースに、Simulaのクラス機能を追加したプログラミング言語
-C++の言語仕様はC言語の上位互換になっている
-言語開発中の名前はC With Classes
*言語仕様
**クラスの宣言
#highlight(cpp){{
class MyClass
{
};
}}
**クラスの継承
#highlight(cpp){{
class Base
{
};
class MyClass : Base
{
};
}}
**クラスの多重継承
#highlight(cpp){{
class Base1
{
public:
void Func()
{
}
};
class Base2
{
public:
void Func()
{
}
};
class MyClass : public Base1,public Base2
{
};
void main()
{
MyClass* pmc = new MyClass();
//あいまいさの解決にはスコープ演算子::を使用する
pmc->Base1::Func();
pmc->Base2::Func();
//以下はコンパイルエラーとなる
//pmc->Func();
delete pmc;
}
}}
**仮想基本クラス
#highlight(cpp){{
class Base1
{
public:
void Func()
{
}
};
//virtualをつけ仮想基本クラスとしてBase1を継承
class Base2 : virtual public Base1
{
};
//virtualをつけ仮想基本クラスとしてBase1を継承
class Base3 : virtual public Base1
{
};
class MyClass : public Base2 , public Base3
{
};
void main()
{
MyClass* pmc = new MyClass();
//virtualがないと以下はコンパイルエラーとなる
pmc->Func();
delete pmc;
}
}}
**抽象クラス
#highlight(cpp){{
//抽象クラス
class AbstractClass
{
public:
//純粋仮想関数
virtual void func() = 0;
};
class MyClass : AbstractClass
{
public:
void func()
{
}
};
void main(){
MyClass* pmc = new MyClass();
pmc->func();
delete pmc;
//抽象クラスはインスタンス生成出来ない
//AbstractClass* pac = new AbstractClass();
}
}}
**コンストラクタ、デストラクタ
#highlight(cpp){{
class MyClass
{
public:
//コンストラクタの宣言
MyClass();
//デストラクタの宣言
~MyClass();
};
//コンストラクタの定義
MyClass::MyClass()
{
}
//デストラクタの定義
MyClass::~MyClass()
{
}
}}
**オブジェクトの生成
#highlight(cpp){{
class MyClass
{
public:
MyClass();
~MyClass();
void Func();
};
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
void MyClass::Func()
{
}
void main()
{
//静的確保
//確保時にコンストラクタが呼ばれ、スコープを抜けた時にデストラクタが呼ばれる
MyClass mc;
mc.Func();
//動的確保
//確保時にコンストラクタが呼ばれ、deleteでデストラクタが呼ばれる
MyClass *pmc = new MyClass();
pmc->Func();
delete pmc;
}
}}
**関数のオーバーライド
#highlight(cpp){{
class base
{
public:
//仮想関数
virtual void Func()
{
}
};
class MyClass : public base
{
public:
void Func()
{
}
};
}}
**関数のオーバーロード
#highlight(cpp){{
class MyClass
{
public:
void Func(int x)
{
}
void Func(int x,int y)
{
}
};
}}
**テンプレート関数
#highlight(cpp){{
#include<iostream>
using namespace std;
template<typename T> T Add(T x,T y)
{
return x + y;
}
void main()
{
//int Add(int,int)となる
cout << Add(1,2);
//double Add(double,double)となる
cout << Add(1.1,1.2);
//コンパイルエラー
//cout << Add(1,1.1);
//double Add(double,double)となる
cout << Add<double>(1.1,1);
}
}}
**テンプレートクラス
#highlight(cpp){{
#include<iostream>
using namespace std;
template<typename T> class MyClass
{
public:
T Add(T x,T y)
{
return x + y;
}
};
void main()
{
MyClass<int> myInt;
//int Add(int,int)となる
cout << myInt.Add(1,2);
MyClass<double> myDouble;
//double Add(double,double)となる
cout << myDouble.Add(1.1,1);
}
}}
**例外処理
#highlight(cpp){{
#include<iostream>
using namespace std;
void main()
{
try
{
//例外を監視するブロック
throw "Exception"; //例外の発生
}
catch(char *str)
{
//例外時の処理を記述するブロック
cout << str;
}
}
}}