2021-02-25チェックインして11日目のC ++を学ぶ


1つ、クラスとオブジェクト

1.パッケージ

詳細は8日目のコンテンツをご覧ください

2.オブジェクトの初期化とクリーンアップ

詳しくは9日目
、詳しくは10日目をご覧ください。

3. C ++オブジェクトモデルとこのポインター

詳細は10日目のコンテンツをご覧ください

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 ++チュートリアル

おすすめ

転載: blog.csdn.net/qq_42616280/article/details/114077049