激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - c++類和對象基本概念

c++類和對象基本概念

2022-03-02 14:49Huang Jason C/C++

這篇文章主要為大家介紹了c++類和對象,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

什么是類?

一系列事物的抽象,對于c++而言,萬事萬物都可以是類。

類包括:屬性+行為

屬性:事物特征->數據類型描述;

行為事物的操作->函數描述;

什么是對象?

類的具體化,類的實例化,抽象->具象;

類的特點:封裝、繼承、派生、多態。

類的定義

創建方法:class

class 類名{

//權限限定詞

public:

protected://保護屬性

private://當不做繼承時,數據成員寫成私有屬性

};//一定有一個分號

權限限定詞作用:類外只能訪問public屬性下面的東西(接口),類外訪問類中數據只能通過對象訪問(static成員除外)

若類中申明類外實現,需要用類名限定(告訴別人函數屬于哪個類的)

沒有寫在權限限定詞下的屬性,默認私有屬性。

權限限定詞只是限定類外對類中的訪問,對類內無權限之分。

結構體中默認屬性是共有屬性

創建對象

普通對象、對象數組(使用較少)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
using namespace std;
class MM
{
public:
    void print()
    {
        cout << name << "\t" << age << endl;
    }
    void initData(string nname,int nage)
    {
        name = nname;
        age = nage;
    }
protected:
    //新標準,可以在類中給數據直接初始化
    string name="默認值";
    int age=0;
};
int main()
{
    //沒有寫構造函數的情況下,和C語言的創建方式是一樣的
    MM  mm;
    mm.print();         //沒有初始化數據
    MM mmArray[4];      //一般很少用對象數組
    //mmArray[0]----mmArray[3]
    //數組: 多個變量名有規律,內存連續的變量的集合
    for (int i = 0; i < 4; i++)
    {
        mmArray[i].initData(string("name") + to_string(i), i + 19);
        mmArray[i].print();
    }
    MM* p = new MM;
    p->initData("張三", 18);
    p->print();
    delete p;
    p = nullptr;
    return 0;
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <string>
using namespace std;
class GirlFriend
{
    void print()
    {
        cout << "不在限定詞下的屬性" << endl;
        cout << "默認為私有屬性" << endl;
    }
public:
    //共有屬性
    //成員函數
    //類中實現函數
    void  printData()
    {
        cout << m_name << "\t" << m_age << endl;
    }
    //為了訪問不能訪問的部分,通常提供一些接口
    void  initData(string name, int age);
protected:
    //保護屬性
    //數據成員
    string m_name;
private:
    //當前類不做繼承處理,數據成員寫成私有屬性
    int m_age;
};
//類外實現類中函數,需要類名限定,告訴別人這個函數是哪里來的
void GirlFriend::initData(string name,int age) 
{
    //Lisa.initData("Lisa", 19);  name="Lisa" age=19
    m_name = name;    //Lisa.m_name=Lisa
    m_age = age;      //Lisa.m_age=19;
    //mm.initData("MM", 29);   name="MM" age=29
    //mm.m_name=MM;
    //mm.age=29
}
struct MM
{
    int num;   //默認屬性是公有屬性
protected:
    string name;
private:
    int age;
};
void testMM()
{
    //MM mm = { 1001,"name",28 };
    MM mm;
    mm.num = 103;
    //mm.name = "Ilove";
    //mm.age = 13;
}
int main()
{
    GirlFriend  Lisa;
    Lisa.initData("Lisa", 19);
    Lisa.printData();
    //類外只能訪問public
    //Lisa.m_name = "Lisa";
    //Lisa.m_age = 18;
    GirlFriend mm;
    mm.initData("MM", 29);
    mm.printData();
    //mm.print();  --->不能訪問私有屬性
 
    return 0;
}

成員訪問(初始化)

1.提供共有接口來初始化數據(傳參)

2.通過提供共有接口返回值方式初始化數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <string>
using namespace std;
class MM
{
public:
    //傳參
    void initData(string name, int age)
    {
        m_name = name;
        m_age = age;
    }
    //返回引用
    string& getName()
    {
        return m_name;
    }
    int& getAge()
    {
        return m_age;
    }
    void print()
    {
        cout << m_name << "\t" << m_age << endl;
    }
protected:
    //默認初始化
    string m_name="默認值";
    int m_age=0;
    //不做初始化是一個垃圾值
};
 
int main()
{
    MM girl;
    girl.initData("girl", 19);
    girl.print();
 
    MM mm;
    mm.getName() = "mm";
    mm.getAge() = 18;
    mm.print();
 
    MM boy;
    boy.print();
 
    return 0;
}

c++有頭鏈表與c對比:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <string>
using namespace std;
#if 0
struct Node
{
    int data;
    struct N ode* next;
};
struct Node* createList()
{
    Node* headNode = new Node;
    headNode->next = nullptr;
    return headNode;
}
struct Node* createNode(int data)
{
    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = nullptr;
    return newNode;
}
void insertData(Node* headNode, int data)
{
    Node* newNode = createNode(data);
    newNode->next = headNode->next;
    headNode->next = newNode;
}
void printList(Node* headNode)
{
    Node* pMove = headNode->next;
    while (pMove != nullptr)
    {
        cout << pMove->data<<" ";
        pMove = pMove->next;
    }
    cout << endl;
}
void testListC()
{
    Node* list = createList();
    insertData(list, 10);
    insertData(list, 20);
    printList(list);
}
#endif
 
#if 0
struct Node
{
    int data;
    Node* next;
};
class List
{
public:
    void createList()
    {
        headNode = new Node;
        headNode->next = nullptr;
    }
    void insertData(int data)
    {
        Node* newNode = new Node;
        newNode->data = data;
        newNode->next = nullptr;
 
        newNode->next = headNode->next;
        headNode->next = newNode;
    }
    void printList()
    {
        Node* pMove = headNode->next;
        while (pMove != nullptr)
        {
            cout << pMove->data << " ";
            pMove = pMove->next;
        }
        cout << endl;
    }
protected:
    Node* headNode;     //用一個指針表示整個表頭
};
void testList1()
{
    List* pList = new List;     //C++第一步:創建對象
    pList->insertData(10);
    pList->insertData(20);
    pList->printList();
}
#endif
class Node
{
public:
    Node*& getNext()
    {
        return next;
    }
    int& getData()
    {
        return data;
    }
protected:
    int data;
    Node* next;
};
class List
{
public:
    void createList()
    {
        headNode = new Node;
        headNode->getNext() = nullptr;
    }
    void insertData(int data)
    {
        Node* newNode = new Node;
        newNode->getNext() = nullptr;
        newNode->getData() = data;
 
        newNode->getNext() = headNode->getNext();
        headNode->getNext() = newNode;
    }
    void printList()
    {
        Node* pMove = headNode->getNext();
        while (pMove != nullptr)
        {
            cout << pMove->getData() << "\t";
            pMove = pMove->getNext();
        }
        cout << endl;
    }
protected:
    Node* headNode;
};
void testList2()
{
    //List list;
    //list.insertList(10);
    List* pList = new List;     //C++第一步:創建對象
    pList->createList();
    pList->insertData(10);
    pList->insertData(20);
    pList->printList();
}
int main()
{
    //testListC();
    testList2();
    return 0;
}

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/JustCallMeYuan/article/details/121483379

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
主站蜘蛛池模板: av电影在线免费 | 国产精品久久久久无码av | 成人小视频在线播放 | 日韩深夜视频 | 狠狠ri| 国产色视频免费 | 一级大片一级一大片 | 精品久久久久久久久久久久包黑料 | xxxx18韩国护士hd老师 | 污视频在线免费播放 | av在线免费电影 | 一色屋任你操 | 精品中文字幕在线观看 | 国产美女视频一区二区三区 | 中文字幕精品在线播放 | 亚洲最新无码中文字幕久久 | 亚洲一区成人 | 亚洲导航深夜福利涩涩屋 | 成人免费观看av | 国产一级做a爱片在线看免 2019天天干夜夜操 | 美女一级视频 | 久草在线视频看看 | 中文字幕在线观看1 | 国产麻豆久久 | 激情综合在线 | 久草在线视频网 | 中文字幕国| 成人黄色在线视频 | 日本欧美一区二区三区在线播 | 久久手机在线视频 | 72pao成人国产永久免费视频 | 亚洲成人在线视频网 | 国产在线第一区 | 日韩精品一区二区三区中文 | 国产成人在线视频播放 | 国产精品视频一区二区三区四区五区 | 中国免费黄色 | 日本黄视频在线观看 | 久久亚洲成人 | 日本网站一区 | 91成人免费网站 |