C++| המרות מרומזות בבנאית העתקה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

C++| המרות מרומזות בבנאית העתקה


Dolmiti

Recommended Posts

מדוע התכנית הראשית עובדת? איך הקומפיילר מפרש אותה?

#include <iostream>
using namespace std;

class FooClass
{
private:
	int m_number;
public:
FooClass(int n) 
{
m_number = n;
}

int getNumber() const { return m_number; }
};

void func(FooClass c)  {cout << "In func: c.m_number=" << c.getNumber() << endl;}

int  main()
{
func((FooClass)9);
return 0;
}

 

קישור לתוכן
שתף באתרים אחרים

  • 3 שבועות מאוחר יותר...

אני חושב שמה שעושה את העובדה היא העובדה שהקומפיילר מסתכל על הפונקציה 

void func(FooClass c)

מבין שהוא צריך לקבל אוביקט של fooClass 

מסתכל על איך בונים אוביקט כזה - רואה שהוא יודע לבנות אוביקט fooCkass מהערך 9 -- חשוב לציין שגם אם תשלח 'a' הוא יחזיר 97 מאותה הסיבה 

זה נקרא converting cpnstruvtor 

 http://en.cppreference.com/w/cpp/language/converting_constructor

 

בכל מקרה הוא יבנה אוביקט זמני ידפיס את הערך וכאשר הוא יצא מהפונקציה הוא יהרוס את האוביקט (תוסיף הדפסות ותראה)

 

נ.ב

אם תוסיף לפני הבנאי שלך  את המילה explicit  - התוכנית לא תתקמפל 

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...