C++之構造函數和析構函數

一、構造函數

1. 構造函數的定義:
1)C++中的類可以定義與類名相同的特殊成員函數,這種與類名相同的成員函數叫做構造函數;
2)構造函數在定義時可以有參數;
3)沒有任何返回類型的聲明。
2. 構造函數兩種調用方式:
自動調用:一般情況下C++編譯器會自動調用構造函數
手動調用:在一些情況下則需要手工調用構造函數

二、析構函數

1. 析構函數的定義:
1)C++中的類可以定義一個特殊的成員函數清理對象,這個特殊的成員函數叫做析構函數
語法:~ClassName()
2)析構函數沒有參數也沒有任何返回類型的聲明
3)析構函數在對象銷毀時自動被調用
2. 析構函數的調用:
C++編譯器自動調用

構造函數和析構函數的實際應用:
構造函數:

#include <stdio.h>class Test
{
public:// 構造函數:用來對類的成員變量進行初始化// 沒有返回值,函數名和類名一樣// 構造函數在定義對象的時候自動調用,一般情況下,不需要手動調用Test()                    // 無參構造{m_a = 1; m_b = 2;printf ("構造函數被調用....\n");}// 構造函數可以被重載Test(int a)               // 有參構造{m_a;printf ("1111111111111個參數的構造函數被調用\n");}Test (const char *p){}// 拷貝構造函數(賦值構造函數)Test (const Test &obj){}Test (int a, int b){m_a = a;m_b = b;printf ("22222222222222個參數的構造函數被調用\n");}void setAB(int a, int b){m_a = a;m_b = b;}void print(){printf ("a = %d, b = %d\n", m_a, m_b);}
private:int m_a;int m_b;
};int main4_2()
{// 在定義對象的時候,會自動調用構造函數,這里會調用無參構造函數
#if 0Test t1,t2,t3,t4;t1.print();t4.print();
#endif// 對象定義方式:// 1、直接定義對象:括號法Test t1;         // 調用無參構造函數Test t2(10);     // 調用1個參數的構造函數Test t3(10,20);  // 調用2個參數的構造函數// 2、等號的方式: 只能調用一個參數的構造函數,構造函數參數類型和等號右邊數據類型一致Test t4 = 10;       // 調用1個參數的構造函數Test t5 = (10,20);  // 調用1個參數的構造函數Test t6 = "asdsad";Test t7 = t4;// 3、手動調用構造函數Test t8 = Test();Test t9 = Test(10);Test t10 = Test(10,20);return 0;
}int main4_1()
{Test t1;t1.setAB(10,20);t1.print();return 0;
}

析構函數:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>class Test5_1
{
public:Test5_1(){m_a = 10;printf ("無參構造函數被調用\n");}// 析構函數: 沒有返回值、沒有參數、系統自動調用// 在對象被銷毀前會自動調用對象的析構函數~Test5_1(){printf ("*******************析構函數被調用\n");}
private:int m_a;
};int main5_1()
{{Test5_1 t;printf ("hello asdsadddddddddd\n");}printf ("-----------------------------\n");return 0;
}class Test5_2
{
public:Test5_2(){m_name = (char *)malloc(sizeof(char)*20);}~Test5_2(){if (m_name != NULL){free(m_name);m_name = NULL;}}
private:char *m_name;
};int main5_2()
{Test5_2 t1;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448408.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

顯卡常識 電腦顯卡基礎知識普及

我們組裝電腦的時候肯定需要考慮到顯卡性能&#xff0c;如果電腦配置中的顯卡性能不行&#xff0c;那么電腦肯定玩不了大型游戲。可能一些新電腦用戶對顯卡一點也不了解&#xff0c;我們下面來詳細介紹一下電腦顯卡的基礎知識。 一、顯卡簡介 顯卡是個人電腦最基本組成部分之一…

操縱瀏覽器歷史記錄 : popstate() 、 history.pushState() 、 window.history.pushState()

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、歷史記錄前進與后退 1.后退&#xff1a; window.history.back() -- 相當于用戶在瀏覽器的工具欄上點擊返回按鈕&#xff1b; 2.前…

C++之拷貝函數

拷貝構造函數是一種特殊的構造函數&#xff0c;函數的名稱必須和類名稱一致&#xff0c;它的唯一的一個參數是本類型的一個引用變量&#xff0c;該參數是const類型&#xff0c;不可變的。例如&#xff1a;類X的拷貝構造函數的形式為X(X& x)。 以下情況都會調用拷貝構造函數…

spring Boot 學習(七、Spring Boot與開發熱部署)

一、熱部署在開發中我們修改一個Java文件后想看到效果不得不重啟應用&#xff0c;這導致大量時間 花費&#xff0c;我們希望不重啟應用的情況下&#xff0c;程序可以自動部署&#xff08;熱部署&#xff09;。有以下四 種情況&#xff0c;如何能實現熱部署。?1、模板引擎 – 在…

解決: Cannot find module ‘webpack-cli/bin/config-yargs‘、Error: Cannot find module ‘webpack-cli‘

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 npm 、cnpm 、node、vue 全都裝上了&#xff0c;就是 webpack 裝不上&#xff01;&#xff01; 最后我把整個服務器還原為初始設置了&…

路由器和交換機的區別詳解

很多人對路由器和交換機混為一談&#xff0c;甚至搞不清楚路由器和交換機有什么區別&#xff0c;有的用戶還認為是一樣的功能&#xff0c;看名字就知道是兩種不同的產品&#xff0c;功能雖然有些類似&#xff0c;但絕對不會完全相同&#xff0c;否則就沒有必要用兩個全面不同的…

C++之構造函數和析構函數強化

構造與析構調用順序: #include <stdio.h>class Test9_1 { public:Test9_1 (int a){m_a a;printf ("9_1 1111111111111111111構造函數....a: %d\n", a);}// 析構的順序和構造的順序相反&#xff0c;先構造的后析構~Test9_1(){printf ("9_1 1111111111111…

Oracle的逆向工程generatorConfig

<?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <ge…

最簡單、圖解:阿里云服務器上裝 Docker 、 CentOS上 docker安裝(3分鐘裝完)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // 為了裝 vue 的 webpack &#xff0c;我把整個服務器重置了。docker 也沒有了&#xff0c;只好重新裝 docker ... 1. 準備工作 yum …

C++之對象的動態建立和釋放

new和delete的用法&#xff1a; 1&#xff09;在軟件開發過程中&#xff0c;常常需要動態地分配和撤銷內存空間&#xff0c;例如對動態鏈表中結點的插入與刪除。在C語言中是利用庫函數malloc和free來分配和撤銷內存空間的。C提供了較簡便而功能較強的運算符new和delete來取代m…

7.11牛客題(指針)

今天在牛客做錯了一道題&#xff0c;在此寫下感觸題目如下&#xff1a;若有說明:int i, j2,*p&i;,則能完成 ij 賦值功能的語句是&#xff08;B&#xff09;。A i*p; B *p*&j; C i&j; D i**p; 分析&#xff1a;題目中&#xff0c;p指針指向i的地址&#xff0c;A選項…

gpu簡介

GPU英文全稱Graphic Processing Unit&#xff0c;中文翻譯為“圖形處理器”。GPU是相對于CPU的一個概念&#xff0c;由于在現代的計算機中&#xff08;特別是家用系統&#xff0c;游戲的發燒友&#xff09;圖形的處理變得越來越重要&#xff0c;需要一個專門的圖形的核心處理器…

WM有約(五):部署應用程序

WM有約&#xff08;五&#xff09;&#xff1a;部署應用程序 Written by Allen Lee 創建安裝包 創建一個新的項目&#xff0c;用來部署Windows Mobile應用程序的項目模板是Other Project Types\Setup and Deployment下的Smart Device CAB Project&#xff1a; 圖 1 輸入項…

“ 我亦想望,如池魚悠悠 ... “

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // 鬧鐘響了&#xff0c;起床&#xff0c;洗漱完畢&#xff0c;背上電腦出門&#xff0c;到公司打卡 8&#xff1a;20 。 " 我亦想…

C++之靜態成員變量和靜態成員函數

靜態成員變量 關鍵字 static 可以用于說明一個類的成員&#xff0c; 靜態成員提供了一個同類對象的共享機制 把一個類的成員說明為 static 時&#xff0c;這個類無論有多少個對象被創建&#xff0c;這些對象共享這個 static 成員 靜態成員局部于類&#xff0c;它不是對象成…

熄火/死火

定義 當反應器正在以顯著的反應速率進行操作時&#xff0c;若降低進料入口的溫度&#xff0c;使它達到多重態區域的下限&#xff0c;反應速度會突然大幅度下降&#xff0c;反應基本上停止。這個現象稱為熄滅。相應的入口溫度稱為熄滅點。一般指的是汽車熄火。發生原因 有…

H3C 以太網集線器

轉載于:https://www.cnblogs.com/fanweisheng/p/11169349.html

解決: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 問題描述&#xff1a;阿里云服務器 磁盤初始化之后用 git-bash ssh rootxx.xx.xx.xx 方式登陸服務器&#xff0c;報錯如下。 WARNIN…

C++之面向對象模型

C對象模型可以概括為以下2部分&#xff1a; 1. 語言中直接支持面向對象程序設計的部分&#xff0c;主要涉及如構造函數、析構函數、虛函數、繼承&#xff08;單繼承、多繼承、虛繼承&#xff09;、多態等等。 2. 對于各種支持的底層實現機制。 在c語言中&#xff0c;“數據”…