C++クラスとオブジェクト

1469 ワード

オブジェクトのライフサイクル
メモリの申請->リストの初期化->コンストラクション関数->オブジェクトの使用->コンストラクション関数->メモリの解放
オブジェクトのインスタンス化
1.スタックからインスタンス化
2.スタックからのインスタンス化
#include 
using namespace std;
class Node{
    int x;
    int y;
};
int main(){
    //instantiation from stack
    Node node1;
    Node node2[20];

    //instantiation from heap
    Node* p1 = new Node();
    Node* p2 = new Node[20];

    delete p1;
    delete []p2;
    
    return 0;
}
コンストラクタ
1、オブジェクトがインスタンス化されると、コンストラクション関数が自動的に呼び出されるか、呼び出しが表示されます.
2、コンストラクション関数はオブジェクトを初期化するだけで、メモリが割り当てられていない.オブジェクトがインスタンス化されると、コンストラクション関数を再使用して初期化できます.
3、初期化リスト:関数を構築する前に実行し、const定数に初期値を割り当てることができる
4、オブジェクト配列を初期化する場合、パラメータのないコンストラクション関数しか使用できません.パラメータのあるコンストラクション関数を呼び出すことはできません.インスタンス化してからコンストラクション関数の初期化を再度呼び出すことができます.
#include 
using namespace std;
class Node{
public:
    Node():x(0),y(0){//initial list
        cout<
5、コピー構築関数
システムにはデフォルトのコピーコンストラクション関数があり、カスタマイズするとコンストラクション関数と同じ形式になります.ただし、const修飾オブジェクトの参照にパラメータが入力されるだけです.
#include 
using namespace std;
class Node{
public:
    Node():x(0),y(0){//initial list
        cout<
こうぞうかんすう
オブジェクトの破棄時に自動的に呼び出され、パラメータがなく、戻り値がなく、再ロードできません.
#include 
using namespace std;
class Node{
public:
    Node():x(0),y(0){//initial list
        s = new char[20];
        cout<