এর মানে কি?


92

আমার 2 টি ক্লাস রয়েছে:

class base {
    virtual void foo() {};
};

class derived : public base {
    void foo() { base::foo(); }
};

আমি একটি ভুল করেছি এবং base:foo();পরিবর্তে লিখেছি base::foo();। কোডটি সংকলন করে চালানো হয়েছিল, তবে সেগফ্ল্যাশ্ট।

আমি কীভাবে এটি গুগল করতে পারি এবং এটি কী তা আমি জানি না তবে আমি খুব আগ্রহী: এর অর্থ কী?

base:foo();

যদি এটি গুরুত্বপূর্ণ হয়:

class base : public QAbstractGraphicsShapeItem

32
এটি একটি লেবেল ।
— ক্রিস

20
এটি এমন একটি ঘটনা যেখানে সতর্কবাণীগুলি চালু করা, এটি সরাসরি দেখতে সহায়তা করে ... warning: label 'base' defined but not used [-Wunused-label]... সম্ভবত আমাদের একটি প্রশ্ন পৃষ্ঠা জিজ্ঞাসা করতে হবে
— শফিক ইয়াঘমোর

6
এটি স্ট্যাকের ওভারফ্লো দিয়ে শেষ হয়েছিল। কত উপযুক্ত!
— লরেন্ট এলএ রিজ্জা

উত্তর:


125
void foo() { base:foo(); }

সমান:

void foo()
{
   base: // An unused label.
   foo(); // Calls the function again, resulting in infinite recursion.
}

অসীম পুনরাবৃত্তির কারণে, ফাংশন স্ট্যাকের ওভারফ্লো করে causes


4
হ্যাঁ, আমি foo()কল স্ট্যাকের অনেক কল দেখতে পেয়েছিলাম that ধন্যবাদ
— রেলমিসাক

জিসিসি / বিড়ম্বনা ইত্যাদিতে এর জন্য কি সতর্কতা পাওয়া যায়?
— সংবেদনহীনতা

10
@ সের্থি, আমি যখন ব্যবহার করি তখন আমি -Wallসতর্কতা বার্তাটি পাই
— আর সাহু

10
@ সেরথি: আইআইআরসি ভিজ্যুয়াল স্টুডিওতে "এর জন্য সমস্ত নিয়ন্ত্রণের পথে পুনরাবৃত্তি" করার সতর্কতা রয়েছে।
— এমসাল্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.