日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【小白学习C++ 教程】十二、C++面向对象编程中的构造函数和析构函数

發布時間:2024/10/8 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小白学习C++ 教程】十二、C++面向对象编程中的构造函数和析构函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

面向對象編程旨在:在編程中實現繼承、隱藏、多態等現實世界的實體。OOP 的主要目的是將數據和對它們進行操作的函數綁定在一起。

我們可以說C++中的類,代表一組共享一些共同屬性和行為的對象。

class person {char name[20];int id; public:void getdetails(){} };int main() {person p1; // p1 is a object }

構造函數

構造函數是特殊的類成員,每次實例化該類的對象時,編譯器都會調用它們。構造函數與類同名,可以定義在類定義的內部或外部。

構造函數在以下方面與普通函數不同:

  • 構造函數與類本身同名
  • 構造函數沒有返回類型
  • 創建對象時會自動調用構造函數。
  • 它必須放在class的公共部分。
  • 如果我們不指定構造函數,C++ 編譯器會為對象生成一個默認構造函數(期望沒有參數并且有一個空體)。

有3種類型的構造函數:

  • 默認構造函數
  • 參數化構造函數
  • 復制構造函數(這種比較少見)
#include <iostream> using namespace std; class Geeks { public:int id;//默認構造Geeks(){cout << "Default Constructor called" << endl;id = -1;}//參數化構造函數Geeks(int x){cout << "Parameterized Constructor called" << endl;id = x;} };int main() {// 默認構造Geeks obj1;cout << "Geek id is: " << obj1.id << endl;// 參數化構造函數Geeks obj2(21);cout << "Geek id is: " << obj2.id << endl;return 0; }Default Constructor called Geek id is: -1 Parameterized Constructor called Geek id is: 21

復制構造函數是一個成員函數,它使用同一類的另一個對象來初始化一個對象。復制構造函數具有以下通用函數原型:

ClassName (const ClassName &old_obj);

以下是復制構造函數的簡單示例。

#include <iostream> using namespace std;class Point { private:int x, y;public:// 參數化構造函數Point(int x1, int y1){x = x1;y = y1;}// 復制構造函數Point(const Point &p1){x = p1.x;y = p1.y;}int getX() { return x; }int getY() { return y; } };int main() {Point p1(10, 15); // 參數化構造函數Point p2 = p1; // 復制構造函數cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();cout << "\np2.x = " << p2.getX() << ", p2.y = " << p2.getY();return 0; }p1.x = 10, p1.y = 15 p2.x = 10, p2.y = 15

析構函數

析構函數是另一個特殊的成員函數,當對象的作用域結束時由編譯器調用。

#include <iostream> using namespace std; class Geeks {public:int id;//析構函數~Geeks(){cout << "Destructor called for id: " << id <<endl;} };int main(){Geeks obj1;obj1.id=7;int i = 0;while ( i < 5 ){Geeks obj2;obj2.id=i;i++; } // obj2的范圍到此結束return 0;} // obj1的范圍到此結束Destructor called for id: 0 Destructor called for id: 1 Destructor called for id: 2 Destructor called for id: 3 Destructor called for id: 4 Destructor called for id: 7

面向對象編程中的三大封裝、繼承和多態

繼承

繼承:一個類從另一個類派生屬性和特征的能力稱為繼承。繼承是面向對象編程最重要的特性之一。

  • 子類:從另一個類繼承屬性的類稱為子類或派生類。
  • 超類:其屬性由子類繼承的類稱為基類或超類。
  • 可重用性:繼承支持“可重用性”的概念,即當我們想要創建一個新類并且已經有一個包含我們想要的一些代碼的類時,我們可以從現有類中派生出我們的新類。通過這樣做,我們正在重用現有類的字段和方法。

封裝

數據封裝是一種把數據和操作數據的函數捆綁在一起的機制,數據抽象是一種僅向用戶暴露接口而把具體的實現細節隱藏起來的機制。

C++ 通過創建類來支持封裝和數據隱藏(public、protected、private)。我們已經知道,類包含私有成員(private)、保護成員(protected)和公有成員(public)成員。默認情況下,在類中定義的所有項目都是私有的。例如:

多態

多態:多態這個詞意味著有多種形式。簡單來說,我們可以將多態性定義為消息以多種形式顯示的能力。

一個人同時可以有不同的特點。就像男人同時是父親、丈夫、雇員。所以同一個人在不同的情況下會有不同的行為。這稱為多態性。

總結

以上是生活随笔為你收集整理的【小白学习C++ 教程】十二、C++面向对象编程中的构造函数和析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。