আমি দেখেছি যে শিরোনাম ফাইলে কী যায় এবং সিপিপি ফাইলে কী হয় সে সম্পর্কে সি ++ তে বিভিন্ন বিভিন্ন দৃষ্টান্ত রয়েছে। আফাইক, বেশিরভাগ লোকেরা, বিশেষত সি পটভূমির লোকেরা এটি করেন:
foo.h
class foo {
private:
int mem;
int bar();
public:
foo();
foo(const foo&);
foo& operator=(foo);
~foo();
}
foo.cpp
#include foo.h
foo::bar() { return mem; }
foo::foo() { mem = 42; }
foo::foo(const foo& f) { mem = f.mem; }
foo::operator=(foo f) { mem = f.mem; }
foo::~foo() {}
int main(int argc, char *argv[]) { foo f; }
যাইহোক, আমার প্রভাষকরা সাধারণত নতুনদের এভাবে সি ++ পড়ান:
foo.h
class foo {
private:
int mem;
int bar() { return mem; }
public:
foo() { mem = 42; }
foo(const foo& f) { mem = f.mem; }
foo& operator=(foo f) { mem = f.mem; }
~foo() {}
}
foo.cpp
#include foo.h
int main(int argc, char* argv[]) { foo f; }
// other global helper functions, DLL exports, and whatnot
মূলত জাভা থেকে আগত, আমিও বেশিরভাগ কারণে সর্বদা এই দ্বিতীয় পথে আটকে ছিলাম, যেমন ইন্টারফেস বা পদ্ধতির নামগুলি পরিবর্তিত হলে আমাকে কেবল এক জায়গায় কিছু পরিবর্তন করতে হবে, যখন আমি ক্লাসে জিনিসগুলির আলাদা ইন্ডেন্টেশন পছন্দ করি যখন আমি তাদের বাস্তবায়ন তাকান, এবং আমি নাম এমন আরো অনেক পাঠযোগ্য যে foo
তুলনায় foo::foo
।
আমি উভয় উপায়ে প্রো এবং কনস সংগ্রহ করতে চাই। সম্ভবত এখনও অন্যান্য উপায় আছে?
আমার উপায়গুলির একটি অসুবিধা অবশ্যই মাঝে মধ্যে আগাম ঘোষণার প্রয়োজন।
foo.cpp
এখন আপনারfoo
শ্রেণীর সাথে কিছু করার নেই এবং খালি ছেড়ে দেওয়া উচিত (সম্ভবত তবে এটি#include
আপনার বিল্ড সিস্টেমকে খুশি করতে পারে)।