記事のディレクトリ
1つ、クラスとオブジェクト
1.パッケージ
2.オブジェクトの初期化とクリーンアップ
3. C ++オブジェクトモデルとこのポインター
4.友元
プログラムには、いくつかのプライベート属性があります。クラス外の特別な関数やクラスにアクセスする場合は、友達のテクノロジーを使用する必要があります。
友達の目的は、関数またはクラスが別のクラスのプライベートメンバーにアクセスできるようにすることです。
友達のキーワードは 友達
友達の3つの実現:
- グローバルは友達として機能します
- クラスの友達
- メンバーは友達として機能します
(1)グローバルは友達として機能する
例
#include<iostream>
using namespace std;
#include<string>
class building
{
//加上此句后,即可访问类中私有成员
friend void goodgay(building *building);
public:
building()
{
m_sittingroom = "客厅";
m_bedroom = "卧室";
}
public:
string m_sittingroom; //客厅
private: //私有类属性,一般外部函数不可访问
string m_bedroom; //卧室
};
//全局函数
void goodgay(building *building)
{
cout << "goodgay 全局函数正在访问:" << building->m_sittingroom << endl;
cout << "goodgay 全局函数正在访问:" << building->m_bedroom << endl;
}
void test01()
{
building building;
goodgay(&building);
}
int main()
{
test01();
system("pause");
return 0;
}
(2)友達を作るクラス
例
#include<iostream>
using namespace std;
#include<string>
class building;
class goodgay
{
public:
goodgay();
void visit();
building *Building;
};
class building
{
friend class goodgay;
public:
building();
public:
string m_sittingroom;
private:
string m_bedroom;
};
//类外写成员函数
building::building()
{
m_sittingroom = "客厅";
m_bedroom = "卧室";
}
goodgay::goodgay()
{
Building = new building;
}
void goodgay::visit()
{
cout << Building->m_sittingroom << endl;
cout << Building->m_bedroom<< endl;
}
void test01()
{
goodgay gg;
gg.visit();
}
int main()
{
test01();
system("pause");
return 0;
}
(3)メンバー機能は友達です
例
#include<iostream>
using namespace std;
#include<string>
class building;
class goodgay
{
public:
goodgay();
void visit();//让visit访问私有成员
void visit2();//不可访问
building *Building;
};
class building
{
friend void goodgay::visit();
public:
building();
public:
string m_sittingroom;
private:
string m_bedroom;
};
//类外实现成员函数
building::building()
{
m_sittingroom = "客厅";
m_bedroom = "卧室";
}
goodgay::goodgay()
{
Building = new building;
}
void goodgay::visit()
{
cout << Building->m_sittingroom << endl;
cout << Building->m_bedroom<< endl;
}
void goodgay::visit2()
{
cout << Building->m_sittingroom << endl;
}
void test01()
{
goodgay gg;
gg.visit();
gg.visit2();
}
int main()
{
test01();
system("pause");
return 0;
}
5.演算子のオーバーロード
概念:既存の演算子を再定義し、さまざまなデータ型に適応するための別の関数を提供します
(1)プラス演算子
役割:2つのカスタムデータ型を追加する操作を実現する
[注]学習コースは-ダークホースプログラムC ++チュートリアル