رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران
  • 2
قاسم رمضانی منش

تفاوت بین Struct و Class در سی‌پلاس‌پلاس


سوال

با سلام.

بنده خروجی کد اسمبلی تولید شده Struct و Class را بررسی کردم ظاهرا که خروجی یکسانی دارند ! آیا واقعا دیگر تفاوتی بین کلمه‌کلیدی struct و class در سی‌پلاس‌پلاس نیست ؟

struct.cpp

struct AnotherType{
	public :
		int StructType;
};
int main(){
	AnotherType Object;
	return 0;
}

class.cpp

class AnotherType{
	public :
		int ClassType;
};
int main(){
	AnotherType Object;
	return 0;
}

 

و خروجی های اسمبلی تولید شده :

struct.cpp

[ghasem@clibcore test]$ g++ -S struct.cpp -o Struct && cat Struct 
	.file	"struct.cpp"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (GNU) 8.2.1 20181105 (Red Hat 8.2.1-5)"
	.section	.note.GNU-stack,"",@progbits

class.cpp

[ghasem@clibcore test]$ g++ -S class.cpp -o Class && cat Class
	.file	"class.cpp"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (GNU) 8.2.1 20181105 (Red Hat 8.2.1-5)"
	.section	.note.GNU-stack,"",@progbits

 

و برای اطمینان خروجی حاصل از دستور diff Struct Class :

[ghasem@clibcore test]$ diff Struct Class
1c1
< 	.file	"struct.cpp"
---
> 	.file	"class.cpp"

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 1

تفاوتی که بین struct و class وجود دارد بین دسترسی‌های پیشفرض آنها است؛ در class عضو‌ مربوطه به صورت پیشفرض دارای دسترسی خصوصی (private) بوده و در struct با دسترس عمومی (public) تعریف می‌شوند.

در مثال زیر عضو x مربوط به struct به صورت پیشفرض دارای دسترسی عمومی می‌باشد و عضو x مربوط به class دارای دسترسی خصوصی است.

struct Demo
{
    Demo() {}
    
    int x;
};

class Demo
{
    Demo() {}
    
    int x;
};

در مثال زیر هر دوی ساختار و کلاس مربوط به Demo دارای دسترسی‌های یکسان یعنی هر دو عمومی (public) هستند.

struct Demo
{
    Demo() {}
    
    int x;
};

class Demo
{
public:
    Demo() {}
    
    int x;
};

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...