欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C語(yǔ)言實(shí)現(xiàn)C++對(duì)象和私有成員-創(chuàng)新互聯(lián)

C語(yǔ)言實(shí)現(xiàn)C++對(duì)象和私有成員 C語(yǔ)言實(shí)現(xiàn)C++對(duì)象

類是C++中面向?qū)ο缶幊趟枷胫斜容^重要的組成部分,與結(jié)構(gòu)體一樣類只是一個(gè)模板只有在創(chuàng)建對(duì)象時(shí)才會(huì)申請(qǐng)內(nèi)存空間,類其實(shí)是把具有共同特性的數(shù)據(jù)或方法(面向?qū)ο缶幊讨?,一般把函?shù)稱為方法)都放在一起,用于創(chuàng)建對(duì)象時(shí)使用

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元新洲做網(wǎng)站,已為上家服務(wù),為新洲各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
#include#includetypedef struct _myclass
{int a;
	int b;
	int(*max)(int c, int d);
	int(*min)(int c, int d);
	int(*addab)(struct _myclass *t);
} myclass;

int mbmax(int a, int b) {return (a >b ? a : b);
}
int mbmin(int a, int b) {return (b< a ? b : a);
}

int mbaddab(myclass *t) {return t->a + t->b;
}

//相當(dāng)于C++的類構(gòu)造函數(shù),用于創(chuàng)建一個(gè)類實(shí)例,并初始化這個(gè)類 實(shí)例 ,構(gòu)造函數(shù)命名采用類名init的方式。
myclass * myclassinit() {myclass *t = (myclass  *)malloc(sizeof(myclass));
	t->a = 1;
	t->b = 1;
	t->max = mbmax;
	t->min = mbmin;
	t->addab = mbaddab;
	return t;
}

int main() {myclass *tt = myclassinit();  //類的創(chuàng)建方法只要一條語(yǔ)句就可以完成,達(dá)到了和C++中new類似的效果
	printf("the max number is %d\n", tt->max(4, 8));
	printf("the min number is %d\n", tt->min(4, 8));
	printf("a plus b is %d\n", tt->addab(tt));

	delete tt;
	tt = nullptr;
	return 0;
}
C語(yǔ)言結(jié)構(gòu)體變量私有化

有人說可以通過設(shè)置private使成員變量私有化,但如果這樣做那就真的“私有化”了。因?yàn)橐话憬Y(jié)構(gòu)體都沒有成員函數(shù)(盡管可以有),因此如果設(shè)置成私有,那結(jié)構(gòu)體外的所有函數(shù)都無法調(diào)用成員變量。其實(shí)我們這里說的私有是這些成員變量只能在結(jié)構(gòu)體定義的源文件中使用,而不能被其他源文件使用。
解決方案:將結(jié)構(gòu)體放進(jìn)源文件中,頭文件只放聲明
這其實(shí)跟C的編譯有關(guān),當(dāng)結(jié)構(gòu)體定義在頭文件中時(shí),因?yàn)槲覀冎骱瘮?shù)所在的源文件(main.cpp)會(huì)include這個(gè)頭文件,而編譯時(shí)相當(dāng)于將該頭文件的內(nèi)容直接替換掉inlcude,那么main中或者其他include了該頭文件的函數(shù)都可以訪問結(jié)構(gòu)體成員;但當(dāng)結(jié)構(gòu)體定義在源文件中時(shí),編譯時(shí)沒有將結(jié)構(gòu)體的定義復(fù)制過來,因此結(jié)構(gòu)體成員在main中不可用,但因?yàn)樵谠次募卸x了結(jié)構(gòu)體,因此該源文件下的所有函數(shù)均可以訪問結(jié)構(gòu)體成員。
obj.h

#pragma once
#ifndef  OBJ_H
#define  OBJ_H

typedef struct Obj Obj;

Obj* create_obj(int id, const char* name);
void release_obj(Obj* &o);

int get_obj_id(const Obj* o);
char* get_obj_name(const Obj* o);
#endif 

obj.cpp

#include "obj.h"
#include#includestruct Obj {int id;
	char *name;
};

Obj* create_obj(int id, const char* name)
{Obj* ret = new Obj();
	if (ret) {size_t len = 0;
		ret->id = id;
		len = strlen(name);
		ret->name = new char[len + 1];
		//        ret->name = (char *) name;
		if (ret->name)
		{	memset(ret->name, 0, len + 1);//內(nèi)存初始化
			memcpy(ret->name, name, len);//內(nèi)存賦值
		}
	}
	return ret;
}

void release_obj(Obj* &o)//o為引用變量
{if (!o) return;
	delete o->name;//釋放內(nèi)存
	o->name = nullptr;//釋放完畢要賦空指針
	delete o;
	o = nullptr;
}

int get_obj_id(const Obj* o)
{int ret = 0;
	if (o)ret = o->id;
	return ret;
}
char* get_obj_name(const Obj* o)
{char* ret = nullptr;
	if (o)ret = o->name;
	return ret;
}

main.cpp

#include "obj.h"
#include#includeint main()
{Obj *o = nullptr;
	o = create_obj(1, "test1");
	//    printf("id : %d\n", o->id);
	printf("id: %d, name: %s\n", get_obj_id(o), get_obj_name(o));
	release_obj(o);
	printf("id: %d, name: %s\n", get_obj_id(o), get_obj_name(o));
}

在這里插入圖片描述
參考:
https://www.cnblogs.com/xiaocheng7/p/9420362.html
https://blog.csdn.net/z13653662052/article/details/89003731
https://blog.csdn.net/guogaoan/article/details/38380695

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

網(wǎng)站題目:C語(yǔ)言實(shí)現(xiàn)C++對(duì)象和私有成員-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://aaarwkj.com/article0/hchoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站Google、網(wǎng)站收錄、建站公司靜態(tài)網(wǎng)站、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
亚洲欧美天堂一区二区| 成人在线免费观看视频国产| 日韩在线视频不卡播放| 91成人国产综合久久精品| 亚洲精品成人福利网站| 四影虎影永久免费观看 | 国产日韩欧美另类综合| 亚洲男人天堂中文字幕| 国产欧美高清在线观看视频| 熟妇人妻精品一区二区三区颏| 人妻少妇系列一区二区| 欧美伦理片三级在线观看| 99热精品免费在线观看| 国产综合亚洲欧美日韩| 亚洲天堂av在线观看| 中文字幕乱码av一区二区| 麻豆印象传媒在线观看| 欧美亚洲另类激情另类的| 日韩国产亚洲欧美国产| 日韩爱爱特级视频中文字幕| 日韩精品视频在线不卡播放| 国产国产人免费人成免费人妖| 日韩一区二区电影在线| 欧美另类不卡在线观看| 啪啪视频日韩一区二区| 亚洲国产欧美日韩在线| 亚洲av永久国产剧情| 欧美日韩亚洲中文综合网 | 精品人妻一区二区四区| 亚洲人妖视频在线观看| 日韩一区二区精品网站| 亚洲精品中文字幕乱码三区91| 国产精品高清另类一区二区三区| 免费一区二区三区精品| 91最新精品丝袜国产在线| 91成人精品永久在线观看| 国产内射一级一片内射高清视频1 亚洲一区二区三区不卡伦理 | 韩国黄色三级一区二区| 亚洲免费黄色大片网站| 国产乱一伦一性一情一色| 亚洲97成人在线视频|