真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于c++類中幾種常用的函數(shù)講解及實(shí)例講解-創(chuàng)新互聯(lián)

文章目錄
    • 1、構(gòu)造函數(shù)
    • 2、析構(gòu)函數(shù)
    • 3、拷貝構(gòu)造函數(shù)
    • 4、運(yùn)算符重載
    • 5、 友元函數(shù)

說明:本文實(shí)例均采用vs 2022 c++控制臺(tái)。

專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)左云免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。1、構(gòu)造函數(shù)

(1)函數(shù)名與類名相同。
(2)構(gòu)造函數(shù)無函數(shù)返回類型說明。注意是沒有而不是 void,即什么也不寫,也不可寫void!實(shí)際上構(gòu)造函數(shù)有返回值,返回的就是構(gòu)造函數(shù)所創(chuàng)建的對(duì)象。
(3)在程序運(yùn)行時(shí),當(dāng)新的對(duì)象被建立,該對(duì)象所屬的類的構(gòu)造函數(shù)自動(dòng)被調(diào)用,在該對(duì)象生存期中也只調(diào)用這一次。
(4)構(gòu)造函數(shù)可以重載,但要滿足重載的規(guī)則。
(5)構(gòu)造函數(shù)可以在類中定義,也可以在類外定義。
(6)如果類說明中沒有給出構(gòu)造函數(shù),則C++編譯器自動(dòng)給出一個(gè)缺省的構(gòu)造函數(shù)系統(tǒng):類名為(void){},但只要我們定義了一個(gè)構(gòu)造函數(shù),就不會(huì)自動(dòng)生成缺省的構(gòu)造函數(shù)。
(7)構(gòu)造函數(shù)的參數(shù)可以有缺省值。
構(gòu)造函數(shù)與new運(yùn)算符之間有著緊密的聯(lián)系,我們可以使用new對(duì)象運(yùn)算符來動(dòng)態(tài)地建立這個(gè)對(duì)象。建立時(shí)要自動(dòng)調(diào)用構(gòu)造函數(shù),以便完成初始化對(duì)象的數(shù)據(jù)成員。最后返回這個(gè)動(dòng)態(tài)對(duì)象的起始地址。用new運(yùn)算符產(chǎn)生的動(dòng)態(tài)對(duì)象,在不再使用這種對(duì)象時(shí),必須用delete運(yùn)算符來釋放對(duì)象所占用的存儲(chǔ)空間。
示例:

#pragma once
#include "iostream"
using namespace std;
class A
{public:
	float x, y;
public:
	A(float a, float b) {x = a; y = b; }//初始化
	A() {x = 0; y = 0; }
};
#include#include "A.h"
using namespace std;
int main(void)
{A *pa1, *pa2;
	pa1 = new A(3.0, 5.0);//使用new動(dòng)態(tài)開辟對(duì)象空間
	pa2 = new A();
	cout<< pa1->x<< '\t'<< pa1->y<<'\n';
	cout<< pa2->x<< '\t'<< pa2->y;
	delete pa1;//用delete釋放空間
	delete pa2;
	return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

2、析構(gòu)函數(shù)

(1)析構(gòu)函數(shù)名與類名相同、但在前面加上字符~,如~ CTrianle()。
(2)析構(gòu)函數(shù)無函數(shù)返回類型,與構(gòu)造函數(shù)在這方面是一樣的。但析構(gòu)函數(shù)不帶任何參數(shù)
(3)一個(gè)類有一個(gè)也只有一個(gè)析構(gòu)函數(shù),這與構(gòu)造函數(shù)不同。析構(gòu)函數(shù)可以缺省:
(4)對(duì)象注銷時(shí),系統(tǒng)自動(dòng)調(diào)用析構(gòu)函數(shù)。
在定義一個(gè)對(duì)象時(shí),系統(tǒng)會(huì)給出一個(gè)析構(gòu)函數(shù)。但是我們有的時(shí)候,在程序的執(zhí)行過程中,對(duì)象如果用new運(yùn)算符開辟了空間,則在類中應(yīng)該定義一個(gè)析構(gòu)函數(shù),并在析構(gòu)函數(shù)中使用delete刪除由new 分配的內(nèi)存空間。因?yàn)樵诔废麑?duì)象時(shí),系統(tǒng)自動(dòng)收回為對(duì)象所分配的存儲(chǔ)空間,而不能自動(dòng)收回new分配的動(dòng)態(tài)存儲(chǔ)空間。
示例:

#pragma once
#include "string.h"
#include "iostream"
using namespace std;
class Str
{char* sp;size_t length;
public:
	Str(const char* string)
	{length = 0;
		if (string)
		{	length = strlen(string);
			sp = new char[length + 1];
			strcpy_s(sp,length+1,string);
		}
		else sp = 0;
	}
	~Str()
	{if (sp) delete sp;
	}
	void show(void)
	{cout<< sp<< endl;
    }
};
#include#include "Str.h"
using namespace std;
int main(void)
{Str s1("Studey c++");
	s1.show();
	return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

3、拷貝構(gòu)造函數(shù)

(1)以類對(duì)象作為函數(shù)參數(shù)傳值調(diào)用時(shí)
(2)函數(shù)返回值為類對(duì)象時(shí)
(3)用一個(gè)已定義的對(duì)象去初始化一個(gè)新對(duì)象時(shí)
示例:

#pragma once
class sanweizuobiao
{public:
	sanweizuobiao();
	sanweizuobiao(const sanweizuobiao& m);//拷貝構(gòu)造
	~sanweizuobiao(void);
public:
	double dx;
	double dy;
	double dz;
public:
	double x() const {return dx; }//返回x坐標(biāo)
	double y() const {return dy; }//返回y坐標(biāo)
	double z() const {return dz; }//返回z坐標(biāo)
};
#include "sanweizuobiao.h"
sanweizuobiao::sanweizuobiao()
{dx = 0;
	dy = 0;
	dz = 0;
}
sanweizuobiao::~sanweizuobiao(void)
{}
sanweizuobiao::sanweizuobiao(const sanweizuobiao& m)
{dx = m.dx;
	dy = m.dy;
	dz = m.dz;
}
#include#include "sanweizuobiao.h"
using namespace std;
int main(void)
{sanweizuobiao m,n;
	n.dx = 1.134556;
	n.dy = 2.465566;
	n.dz = 3.567878;
	m = sanweizuobiao(n);//調(diào)用拷貝構(gòu)造
	cout<< m.dx<< '\n'<< m.dy<< '\n'<< m.dz;
	return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

4、運(yùn)算符重載

運(yùn)算符重載實(shí)際上是一種函數(shù)詞用的形式。用成員函數(shù)重載運(yùn)算符就是將運(yùn)算符重載定義成一個(gè)類成員的函數(shù)的形式。通常將重載運(yùn)算符的成員函數(shù)稱為運(yùn)算符函數(shù)。
示例:

#pragma once
class A
{public:
	float x, y;
public:
	A(float a = 0, float b = 0)
	{x = a; y = b;
	}
	A operator++()
	{A t;
		t.x = ++x;
		t.y = ++y;
		return t;//前置運(yùn)算
	}
	A operator++(int)
	{A t;
		t.x = x++;
		t.y = y++;
		return t;//后置運(yùn)算
	}
};
#include#include "A.h"
using namespace std;
int main(void)
{A a(2, 3), b,c;
	b = ++a;
	c = a++;
	cout<< a.x<< '\t'<< a.y<<'\n';
	cout<< b.x<< '\t'<< b.y<<'\n';
	cout<< c.x<< '\t'<< c.y;//因?yàn)閍前置運(yùn)算一次,后置運(yùn)算一次,所以a的最終的值為4,5.b值是前置運(yùn)算所以為3,4.c值是后置運(yùn)算就是3,4
	return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

5、 友元函數(shù)

1、該函數(shù)不屬于任何對(duì)象,其實(shí)就是一個(gè)全部函數(shù),但是這個(gè)全局函數(shù)僅僅作用于該類的對(duì)象。
2、該函數(shù)可以訪問該類的私有成員變量,公有的更加不用說了。
示例:重載運(yùn)算符+號(hào)

#pragma once
#include "iostream"
using namespace std;
class A
{int i;
public:
	A(int a = 0)
	{i = a;
	}
	void show(void) {cout<< "i="<< i<< endl; }
	friend A operator+(A&, A&);
};
A operator+(A&a, A&b)
{A t;
	t.i = a.i + b.i;
	return t;
}
#include#include "A.h"
int main(void)
{A a1(10), a2(20), a3;
	a1.show();
	a2.show();
	a3 = a1+ a2;
	a3.show();
	return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

文章參考戴吾蛟老師主編的《測(cè)繪程序設(shè)計(jì)》編寫,代碼有所修改,并加入自己的理解,c++類撰寫入門的小伙伴可參考!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁標(biāo)題:關(guān)于c++類中幾種常用的函數(shù)講解及實(shí)例講解-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/dihhhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部