網(wǎng)站首頁 編程語言 正文
構(gòu)造函數(shù)概念:
構(gòu)造函數(shù)是一個特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對象時由編譯器自動調(diào)用,保證每個數(shù)據(jù)成員都有一個合適的初始值,并且在對象的生命周期內(nèi)只調(diào)用一次(創(chuàng)建對象)
作用:
創(chuàng)建一個對象(面向?qū)ο螅谝徊娇隙ǖ脛?chuàng)建對象)并且數(shù)據(jù)成員都有初始數(shù)值(數(shù)值有初始化和賦值)
初始化和賦值區(qū)別
- 初始化(數(shù)值在構(gòu)建函數(shù)中給予)
- 賦值(數(shù)值在構(gòu)建函數(shù)完成之后給予)
初始化(數(shù)值在構(gòu)建函數(shù)中給予)
#ifndef __COMPLEX__ #define __COMPLEX__ class complex { public: complex(double r = 0, double i = 0) : re(r), im(i) {} //初始化 private: double re, im; }; #endif // !__COMPLEX__
#include"complex.h" int main() { complex c1(1, 1); return 0; }
1.調(diào)用構(gòu)造函數(shù)
2.創(chuàng)建對象名字為c1
3.對象中數(shù)據(jù)成員與函數(shù)參數(shù)對應(yīng),進行數(shù)值給予,生成對象的數(shù)據(jù)成員順序是類中private的順序
4.對象c1創(chuàng)建成功
賦值(數(shù)值在構(gòu)建函數(shù)完成之后給予)
#ifndef __COMPLEX__ #define __COMPLEX__ class complex { public: complex(double r = 0, double i = 0) //名字與類名相同 { re = r; im = i; } private: double re, im; }; #endif // !__COMPLEX__
#include"complex.h" int main() { complex c1(1, 1); return 0; }
1.調(diào)用構(gòu)造函數(shù)
2.創(chuàng)建對象名字為c1
3.構(gòu)建函數(shù)中沒有初始化,編譯器自動加上初始化操作,對數(shù)據(jù)成員進行隨機數(shù)初始化
4.對象c1創(chuàng)建成功
5.函數(shù)中輸入的兩個參數(shù),函數(shù)執(zhí)行命令行,對數(shù)據(jù)進行賦值
如何得知兩則區(qū)別
tihs指針
this指針中存儲的是自己對象的地址
在兩者構(gòu)造函數(shù)中使用this指針,初始化操作因為類對象完成初始化前,類對象還未形成,所以會對this報錯
初始化中使用this
class complex { public: complex(double r = 0, double i = 0) : this->re(r),this-> im(i) {} private: double re, im; };
error: expected '{' before 'this'
賦值中使用this
class complex { public: complex(double r = 0, double i = 0) { this->im = r; this->re = i; } private: double re, im; };
原文鏈接:https://blog.csdn.net/ljh5930/article/details/126559320
相關(guān)推薦
- 2022-06-01 聊聊.Net,Core配置Nlog.md的問題_實用技巧
- 2022-05-15 C++中類的轉(zhuǎn)換函數(shù)你了解嗎_C 語言
- 2022-08-22 Go語言學(xué)習(xí)之Switch語句的使用_Golang
- 2023-03-13 Android布局中margin與padding的區(qū)別及說明_Android
- 2022-01-14 函數(shù)的防抖和節(jié)流&&深淺克隆
- 2023-01-30 python?集合常用操作匯總_python
- 2022-08-13 Flutter實現(xiàn)不同縮放動畫效果詳解_Android
- 2022-11-23 關(guān)于vba代碼運行時錯誤1004?應(yīng)用程序定義或?qū)ο蠖x錯誤問題_VBA
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支