'স্ট্যাটিক ফাংশন' কখন ব্যবহার হয়?


25

ঠিক আছে, আমি স্থির ফাংশন কী তা শিখেছি, তবে তারা এখনও ব্যক্তিগত সদস্য ফাংশনগুলির চেয়ে কেন কার্যকর তা আমি দেখতে পাই না। এটি এখানে একটি নতুন প্রশ্ন-এর প্রশ্ন হতে পারে, তবে কেন কেবল সমস্ত ব্যক্তিগত সদস্য ফাংশন স্থির ফাংশনগুলির সাথে প্রতিস্থাপন করবেন না?


1
এটি "ব্যক্তিগত সদস্য ফাংশনগুলির সাথে সমস্ত স্থিতিশীল ফাংশনগুলি প্রতিস্থাপন" করা উচিত নয়? বর্তমানে, আপনি বলছেন যে আপনি স্থির পদ্ধতির বিন্দুটি দেখতে পাচ্ছেন না এবং আমরা কেন সেগুলি বেশি ব্যবহার করি না তা জিজ্ঞাসা করুন।

5
"স্ট্যাটিক ফাংশন" কী? সি ++-তে কমপক্ষে দুটি অর্থ রয়েছে (এবং সর্বশেষে আমি সি ++ ১১ টি খসড়া দেখেছি, তারা staticস্কোপ ফাইল করার সীমাবদ্ধতার জন্য অবমূল্যায়নের নোটিশটি সরিয়ে ফেলবে।
ডেভিড থর্নলে

আপনি কি সি / সি ++ তে ফাইল-স্কোপ স্ট্যাটিক ফ্রি ফাংশন অর্থে "স্ট্যাটিক ফাংশন" বা "স্ট্যাটিক মেমেনবার ফাংশন / পদ্ধতি" হিসাবে বোঝেন? এটা বিশাল পার্থক্য!
জানু হুডেক

@ জানহুদেক: আমি মনে করি যে আমাদের উপস্থিতি থাকলে private memberনিরাপদে ধরে নিতে পারি যে ওপি ওও ধারণা সম্পর্কে জিজ্ঞাসা করছে এবং ফাইল-স্কোপ স্ট্যাটিক সম্পর্কে তার কোনও ধারণা নেই।
ম্যাথিউ এম।

@ ম্যাথিউইউম: আসলে 'প্রাইভেট সদস্য' এর উপস্থিতি হ'ল আমাকে বিশ্বাস করতে পরিচালিত করে যে তিনি সি ++ অর্থে স্থির কাজগুলি বোঝায়। কারণ ফাইল-স্কোপড স্ট্যাটিক ফাংশন এবং প্রাইভেট মেম্বার ফাংশন দুটি বিষয় যা সি ++ তে খুব একই রকম ব্যবহার রয়েছে, যখন পাবলিক স্ট্যাটিক সদস্যকে প্রাইভেট নন-স্ট্যাটিক সদস্যের সাথে প্রতিস্থাপন করা ঠিক তেমন অর্থবোধ করে না। দুর্ভাগ্যক্রমে ওপি সাড়া দিচ্ছে বলে মনে হচ্ছে না।
জানু হুডেক

উত্তর:


25

ধরে নিই যে আপনি ওওপি ব্যবহার করছেন , স্থির ফাংশনগুলি ব্যবহার করুন যখন তারা কোনও শ্রেণীর সদস্যের উপর নির্ভর করে না। তারা এখনও ব্যক্তিগত হতে পারে, তবে তারা সম্পর্কিত অবজেক্টের কোনও উদাহরণের উপর নির্ভর করে না বলে এগুলি তারা অনুকূলিত হয়েছে।

উপরেরটি ব্যতীত, আমি স্থিতিশীল ফাংশনগুলি দরকারী বলে মনে করি যখন আপনি কেবলমাত্র একটি পাবলিক ফাংশন সম্পাদন করতে কোনও অবজেক্টের কোনও উদাহরণ তৈরি করতে চান না। এটি প্রধানত সহায়ক ক্লাসগুলির ক্ষেত্রে যা কিছু পুনরাবৃত্তি এবং সাধারণ কাজ করার জন্য সর্বজনীন ফাংশন ধারণ করে, তবে কলগুলির মধ্যে কোনও রাজ্য বজায় রাখার দরকার নেই।


আপনাকে বার্নার্ড ধন্যবাদ। বিটিডব্লিউ, আপনি কি জানেন যে একটি সংকলক "ক্লাসে কোনও পদ্ধতি বাঁধাই" এর অর্থ কী?
টেম্পলার

@ ডার্ক টেম্পলার: বলতে পারি না যে আমি করি। এটি কি কোনও বিশেষ ভাষার সাথে নির্দিষ্ট?
বার্নার্ড

আপনার সংজ্ঞায় আমার কিছুটা সমস্যা আছে "তারা কোনও শ্রেণীর সদস্যের উপর নির্ভর করে না"। সদস্য স্ট্যাটিক ফাংশনগুলি কোনও অ স্থিতিশীল সদস্য অ্যাক্সেস করতে পারে না, তবে তারা স্থির সদস্যদের অ্যাক্সেস করতে পারে। স্ট্যাটিক সদস্যরা ক্লাসের সদস্য।
নিউপ্রিন্ট

@ নিউপ্রিন্ট: আপনি সঠিক, তবে আমি যা বলেছিলাম তা তা নয়। আমি বলেছিলাম যখন তারা কোনও শ্রেণীর সদস্যের উপর নির্ভর করে না। স্থিতিশীল সদস্যদের প্রয়োজনে ব্যবহার করা ভাল, তবে এটি সর্বদা ক্ষেত্রে নাও হতে পারে।
বার্নার্ড

8

উপরের (আরও ভাল ভাল) এর চেয়ে আরও সরল ব্যাখ্যাটির জন্য চেষ্টা করা।

একটি অবজেক্ট হ'ল কোড + ডেটা normal একটি স্থিতিশীল পদ্ধতি ব্যবহৃত হয় যখন আপনার কেবলমাত্র "কোড" অংশটি মোকাবেলা করার জন্য থাকে (কোনও ডেটা / স্টেট রক্ষণ করা যায় না (স্থিতিশীল ডেটা সদস্য ব্যতীত))।


5

কারণ তাদের কোনও উদাহরণের প্রয়োজন নেই এবং তারা সর্বজনীন হতে পারে। বলুন আপনার সর্বশ্রেষ্ঠ সাধারণ ডিনোমিনেটর পেতে একটি ফাংশন প্রয়োজন (জিসিডি; ভগ্নাংশের ক্লাসগুলির জন্য খুব দরকারী; এবং হ্যাঁ এটি কেবল একটি সাধারণ উদাহরণ)। এমন এক শ্রেণীর অবজেক্ট তৈরি করার কোনও অর্থ নেই যার একমাত্র উদ্দেশ্য হ'ল আপনার thisপয়েন্টার থাকতে পারে যা আপনার প্রয়োজন হয় না বা ব্যবহার করতে পারে না gcd। সুতরাং আপনি এটির জন্য একটি স্থিতিশীল পদ্ধতি ব্যবহার করেন, আদর্শভাবে ক্লাসে যা আসলে জিসিডি ব্যবহার করে (যেমন ভগ্নাংশ শ্রেণিতে)।

যদি কেবল স্থিতিশীল পদ্ধতি থাকে তবে অবশ্যই আপনি ওওপিটি ভুল করছেন এবং আপনার দৃষ্টান্তের চেয়ে আরও উপযুক্ত ভাষা ব্যবহার করা উচিত O


আপনার ফ্রি ফাংশনটি ব্যবহার করা কি উদাহরণের চেয়ে ভাল হবে না?
Ela782

2
@ Ela782 যদি ভাষাতে ফ্রি ফাংশন থাকে তবে হ্যাঁ।

ঠিক আছে, আশ্বাস দেওয়ার জন্য ধন্যবাদ। আমি সম্প্রতি এই সেরা অনুশীলনটি শিখেছি। তবে, তখন আমি যখন পাবলিক স্ট্যাটিক সদস্য-ফাংশনটি আসলে কার্যকর হতে পারে তা দেখতে এই মুহূর্তে আমার সমস্যা হচ্ছে, আসুন আমরা সি ++ এর মতো ভাষায় বলি। উভয়ের ব্যবহারের ক্ষেত্রে হ'ল ফাংশনটি শ্রেণীর কোনও উদাহরণের উপর নির্ভর করে না বা প্রয়োজন হয় না এবং তারপরে ফ্রি ফাংশনগুলিই সুপারিশ। হতে পারে এটি একটি নতুন প্রশ্ন হওয়া উচিত।
Ela782

1
@ ইলা 278২ ​​হ্যাঁ, এটি একটি সূক্ষ্ম প্রশ্ন তৈরি করতে পারে। দুটি দ্রুত পয়েন্ট: বিশেষত সি ++ এ, স্ট্যাটিক সদস্যরা টেমপ্লেট মেটা প্রোগ্রামিংয়ের জন্য দরকারী কারণ আপনি কোনও স্থান টেম্পলেট প্যারামিটার হিসাবে পাস করতে পারেন তবে নামের স্থানটি নয়। সাধারণভাবে, স্থির ফাংশনগুলি বোঝাতে ব্যবহার করা যেতে পারে যে ফাংশনটি কিছুটা শ্রেণীর সাথে সত্যই নিবিড়ভাবে সম্পর্কিত, কেবলমাত্র একটি নেমস্পেসের সাথে সম্পর্কিত (মনে করি stuff::Thing::Load(...)বনাম stuff::LoadThing())।

2

আমি এগুলিকে সাধারণ কাজগুলিতে সহায়ক ফাংশন হিসাবে ব্যবহার করি, উদাহরণগুলি:

  • ডিগ্রিগুলি রেডিয়ানে রূপান্তর করা (এবং তদ্বিপরীত);
  • একটি স্ট্রিং হ্যাশিং;
  • এনাম থেকে অন্য কিছুতে রূপান্তর করা (এই প্রকল্পে আমি কাজ করছি, তারা হ্যাশ টেবিল হিসাবে কাজ করে);

আমার বেশিরভাগ ফাইল যা গ্রুপ স্ট্যাটিক ফাংশনগুলির প্রত্যয় সহায়ক রয়েছে, যার অর্থ তারা এগুলি করে, আমাকে আরও কোথাও দ্রুত পেতে সহায়তা করে।


2

স্থির পদ্ধতি কী:

স্ট্যাটিক পদ্ধতিতে ক্লাসের উদাহরণ প্রয়োজন হয় না বা তারা এ জাতীয় উদাহরণের স্পষ্টতই ডেটা (বা এটি, স্ব, আমি, ইত্যাদি) অ্যাক্সেস করতে পারে না [[ 1 ]

স্থির পদ্ধতি কখন কার্যকর হয় তার উদাহরণ:

  • গ্লোবাল / সহায়ক পদ্ধতি
  • ডেটা মডেল শ্রেণি থেকে কোয়েরির ফলাফল পাওয়া (একটি এসপিকে কল করা)

কেবল যেখানে উপযুক্ত সেখানে কেবল সেগুলি ব্যবহার করুন।

  1. যদি আপনি নিজেকে একাধিক অবজেক্টে একই পদ্ধতি অনুলিপি করে দেখেন তবে পদ্ধতিটিকে অচল করে দেওয়ার বিষয়টি বিবেচনা করুন যাতে আপনি DRY অনুসরণ করতে পারেন।
  2. আপনার যদি কোনও জিনিসের উদাহরণ প্রয়োজন না হয় তবে স্থিতিশীল পদ্ধতিগুলি ব্যবহার করুন (আপনি কাজ করছেন না এবং অবজেক্টের উদাহরণ ভেরিয়েবল)

যদি আপনার প্রচুর ডেটা অবজেক্টগুলির বাইরে থাকে এবং স্থির পদ্ধতির মাধ্যমে সেগুলিতে কাজ করা হয় তবে আপনার কোডটি অবজেক্ট নয় এবং এটি বজায় রাখা কঠিন হয়ে উঠতে পারে।


1

স্ট্যাটিক এবং প্রাইভেট আসলে অরথোগোনাল: কোনও পদ্ধতি অচল, বা ব্যক্তিগত বা কোনওটিই বা উভয়ই হতে পারে।

স্ট্যাটিক বনাম নন-স্ট্যাটিক (ওরফে 'ইনস্ট্যান্স মেথডস') নির্দেশ করে যে পদ্ধতিটি ক্লাসে নিজেই চালিত হয় (স্থিতিশীল) বা কোনও নির্দিষ্ট উদাহরণে (অ স্থিতিশীল)। ভাষার উপর নির্ভর করে আপনি একটি স্ট্যাটিক পদ্ধতি কল করতে পারেন একটি উদাহরণের মাধ্যমে, তবে আপনি কোনও স্থির পদ্ধতির মাধ্যমে উদাহরণটি অ্যাক্সেস করতে পারবেন না (এর দ্বারা বোঝা যাচ্ছে যে কোনও স্থিতিশীল পদ্ধতির অভ্যন্তর থেকে আপনি কোনও অ-স্থিতিক পদ্ধতি কল করতে পারবেন না, কেবল কারণ আপনার কোনও ব্যবস্থা নেই) thisঅবজেক্ট)। শ্রেণীর সাথে ধারণামূলকভাবে লিঙ্কযুক্ত এমন আচরণ বাস্তবায়নের জন্য স্থিতিশীল পদ্ধতি ব্যবহার করুন, তবে একটি নির্দিষ্ট উদাহরণের সাথে 'আবদ্ধ' নয় does স্থিতিশীল পদ্ধতিগুলি আপনি ব্যবহার করতে চাইতে পারেন এমন আরও একটি দৃশ্যটি হ'ল যখন আপনার কোনও ফাংশন রয়েছে যা ক্লাসের দুটি উদাহরণের জন্য পরিচালিত হয় এবং অপরেন্দ্রও কোনও বিশেষাধিকারের অধিকারের দাবী করে না - উদাহরণস্বরূপ, ধরে নেওয়া আপনার ক্লাস রয়েছেVector, এবং আপনি সংযোজন বাস্তবায়ন করতে চান; আপনার সংযোজন পদ্ধতি হিসাবে বলা যেতে পারে a.Add(b), তবে Vector.Add(a, b)সম্ভবত আরও বোধগম্য হয়।

ব্যক্তিগত বনাম পাবলিক পদ্ধতিটির দৃশ্যমানতা সম্পর্কে about ব্যক্তিগত পদ্ধতিগুলি কেবল শ্রেণীর নিজস্ব ক্ষেত্রের মধ্যে থেকে অ্যাক্সেস করা যায়, যখন পাবলিক পদ্ধতিগুলি কোথাও থেকে অ্যাক্সেসযোগ্য। এর জন্য সর্বাধিক গুরুত্বপূর্ণ ব্যবহার হ'ল এনক্যাপসুলেশন: আপনার ক্লাসের সাথে যোগাযোগের জন্য বাকী কোডটি একেবারে প্রয়োজনীয় এমন পদ্ধতি এবং বৈশিষ্ট্যগুলিকে জনসম্মুখে তৈরি করে আপনি বাইরের কোডগুলি যে পয়েন্টগুলিতে সমস্যাগুলির পরিচয় দিতে পারে তা সীমাবদ্ধ করেন এবং আপনি ভিতরে সমস্যাগুলি প্রতিরোধ করেন prevent প্রকল্পের বাকি অংশগুলিতে রক্তপাত থেকে আপনার শ্রেণি class

সুতরাং, থাম্ব নিয়ম:

  • শ্রেণীর বাইরে থেকে ডাকতে হবে এমনগুলি বাদে সমস্ত সদস্যের কার্যাদি ব্যক্তিগত করুন
  • সমস্ত পদ্ধতির উদাহরণ পদ্ধতি তৈরি করুন, যদি না ক্লাসের কোনও উদাহরণ উপস্থিত না থাকে তখনও তারা বোধগম্য হয় না

0

আমি ইউটিলিটি ক্লাসের জন্য সি ++ এবং সি # উভয় ক্ষেত্রে স্থিতিশীল পদ্ধতি ব্যবহার করি, ক্লাসগুলির কোনও উদাহরণের ডেটা নেই, দরকারী, সম্পর্কিত পদ্ধতির সংকলন বান্ডিল করার কেবল একটি উপায়।

int count1 = DBUtil::GetCountOfSlackerEmployees();
int count2 = DBUtil::GetCountOfEmployedSlackers();

0

ধরে নেওয়া যাক আপনি সি ++ এর কথা বলছেন (আপনি বলেননি) এবং আপনার শর্তাদি সঠিক আছে (অর্থাত্ সদস্যের কাজগুলি / পদ্ধতিগুলি বোঝায় না):

এমনকি প্রাইভেট সদস্য ফাংশনটি এখনও শিরোনামে ঘোষণা করতে হবে, যার অর্থ এটি প্রকৃতপক্ষে শ্রেণীর এপিআই এবং এবিআইয়ের অংশ হয়ে যায়, যদিও ব্যবহারকারী আসলে এটি কল করতে পারে না। আপনি যদি ব্যক্তিগত সদস্য ফাংশন যুক্ত, সংশোধন বা মুছে ফেলেন, আপনি সমস্ত নির্ভরশীল শ্রেণীর পুনঃসংশোধন করতে বাধ্য করছেন (শিরোনামটি বদলে গেছে, আরও ভাল বুঝতে পারে না) এবং আপনি যখন কোনও লাইব্রেরিতে এটি করেন তখন আপনাকে অ্যাপ্লিকেশনটির জন্য সামঞ্জস্যতা ব্যবহার করে বিবেচনা করতে হবে এটা।

অন্যদিকে ফাইল-স্কোপড স্ট্যাটিক ফাংশনগুলি সর্বজনীন প্রতীক পান না, সুতরাং আপনি নিজের পছন্দ মতো এগুলি যুক্ত করতে, সংশোধন করতে বা মুছতে পারেন এবং একটি সংকলনের ইউনিটের বাইরে কোনও কিছুই প্রভাবিত হবে না।


0

সাধারণত আপনার প্রোগ্রামের এন্ট্রি পয়েন্ট হিসাবে কাজ করার জন্য আপনার একটি স্ট্যাটিক মেইন প্রয়োজন। এটি গুরুত্বপূর্ণ ধরনের হতে পারে।


0

একটি স্ট্যাটিক ফাংশন (এবং বিভিন্ন ভাষায় এই শব্দটির বিভিন্ন অর্থ রয়েছে), কলগুলির মধ্যে ধরে রাখা এমন কোনও রাষ্ট্রের প্রয়োজন হয় না। যদি কোনও শ্রেণি যা যা করে তার সাথে যদি এটি ধারণাগতভাবে ঘনিষ্ঠভাবে আবদ্ধ থাকে তবে এটিকে একটি শ্রেণি ফাংশন করুন (কোনও শ্রেণিতে যেমন কোনও বস্তু নয়), না থাকলে এটি একটি বিশ্বব্যাপী (বা মডিউল-স্তর, যাই হোক না কেন) ফাংশন করুন। এটি কোনও বস্তুর উপর নির্ভর করে না যদি এর অবজেক্টের রাষ্ট্রের প্রয়োজন না থাকে।

আপনি যদি সর্বদা এটির কাছে রাজ্যটি অতিক্রম করে থাকেন তবে এটি সত্যিকারের স্টেটলেস ফাংশন নয়, আপনি কেবল স্টেটলেস সিনট্যাক্স দিয়ে স্টেটফুল ফাংশন করছেন। সেক্ষেত্রে এটি সম্ভবত কলিং অবজেক্টের সাথে সম্পর্কিত, বা সম্ভবত রাষ্ট্র এবং আচরণের আরও ভালভাবে সারিবদ্ধ করার জন্য একটি রিফ্যাক্টরিং নির্দেশিত হয়েছে।


0

"কেবলমাত্র ব্যক্তিগত সমস্ত সদস্যের ফাংশনগুলিকে স্থির ফাংশনগুলির পরিবর্তে কেন প্রতিস্থাপন করা হবে না?"

... কারণ কোনও ব্যক্তিগত সদস্য কেবল উদাহরণের ডেটা অ্যাক্সেস করতে পারেন যখনই কেবল এটি অন্যান্য সদস্যের ফাংশনগুলির মধ্যে করা কলগুলি থেকে ঘটে allowing স্ট্যাটিক ফাংশনটি ব্যক্তিগত হতে পারে, তবে উদাহরণটি পরামিতি হিসাবে পাস না করা হলে এটি ক্লাসের কোনও উদাহরণকে পরিবর্তন করতে বা উল্লেখ করতে সক্ষম হবে না।


0

এটি মজাদার যে কীভাবে কেউ এখনও একটি ভাল উত্তর দিতে সক্ষম হয় নি। আমি নিশ্চিত যে এটি হয় কিনা। আপনার সম্ভবত এটি একটি ইঙ্গিত হিসাবে নেওয়া উচিত যে এগুলি যতটা সম্ভব কম ব্যবহার করা উচিত। এগুলি ওওপি-র পরিবর্তে সমস্ত প্রক্রিয়াজাতকরণের পরে।

এখানে আরও কয়েকটি উদাহরণ দেওয়া হল:

ওবজে-সিতে, যেখানে তাদের শ্রেণি পদ্ধতি বলা হয়, তারা সাধারণত বরাদ্দ মোড়ক হিসাবে ব্যবহৃত হয় যেখানে প্রত্যাবর্তন করার আগে রেফারেন্স গণনা পুলে বস্তুটি রাখা হয়।

ওবজ-সি এর অন্য উদাহরণ হ'ল একটি শ্রেণিকরণে নতুন ক্লাসটি নিবন্ধন করা। ধরা যাক আপনার প্রতিটি ক্লাসের একটি সেট রয়েছে যা প্রতিটি ফাইল এক ধরণের ফাইল পরিচালনা করে। আপনি যখন কোনও নতুন ফাইল টাইপের জন্য একটি নতুন শ্রেণি তৈরি করেন আপনি ক্লাসে স্থির পদ্ধতি যা ফাইলের ধরণ নির্ধারণ করে এটি সংগ্রহের (বিশ্বব্যাপী ভেরিয়েবল) রেজিস্ট্রেশন করতে পারেন।

সি ++ এ অন্য যে ব্যবহারটি আমি ভাবতে পারি তা হ'ল ত্রুটিগুলি ধরা। আপনার নির্মাণকারীর কার্য ব্যর্থ হতে পারে না, ব্যতিক্রম ছোঁড়া ব্যতীত। আপনি একটি ত্রুটি উদাহরণ ভেরিয়েবল সেট করতে পারেন, তবে এটি সর্বদা উপযুক্ত নয়। পরিবর্তে আপনি সেই অংশগুলি করতে পারেন যা স্থির মোড়কে ব্যর্থ হতে পারে এবং তারপরে বরাদ্দ এবং নতুন অবজেক্টটি ব্যর্থ হয় বা ব্যর্থতার পরে NULL করতে পারে।


0

ধরা যাক আপনি কোনও কিছুর সাইনাস গণনা করতে চান।

স্থির ছাড়া:

Math math = new Math()
double y = math.sin(x)

স্থির সহ:

double y = Math.sin(x)

sinঅ-স্থির করার কোনও অর্থ নেই । এটি রাষ্ট্রহীন এবং কেবল ইনপুট প্রক্রিয়া করে।

স্ট্যাটিক ফাংশন একটি নির্দিষ্ট বস্তুর সাথে আবদ্ধ হয় না। এগুলি "সাধারণ" ফাংশন যা বস্তুর অভ্যন্তরীণ অবস্থার থেকে পৃথক।


স্ট্যাটিক পদ্ধতি নেই "আড়ম্বরহীন হতে নিশ্চিত"। যদিও এটি সত্য যে তারা উদাহরণস্বরূপ ডেটা ব্যবহার করতে পারে না, তবে তাদের কিছু স্টেটে (যথা স্থিতিশীল সদস্য, উভয় শ্রেণীর যেখানে স্ট্যাটিক পদ্ধতিটি অন্তর্ভুক্ত রয়েছে এবং অন্যান্য বিশ্বব্যাপী দৃশ্যমান স্থানে যেমন অন্যান্য শ্রেণীর স্থির ভেরিয়েবলগুলির অ্যাক্সেস রয়েছে)।

@ ডেলানান: সত্য ... আপনি ঠিক বলেছেন। আমাকে এখনই এটি সংশোধন করা যাক
ডাগলিনিস

স্ট্যাটিক ছাড়া: x.sin()। আপনার উত্তর ধরে ধরেছে যে পাপটি "গণিত" এর একটি ফাংশন হওয়া উচিত, যেখানে এটি স্পষ্টভাবে দ্বিগুণ হয়ে চলছে।
আজাহানচার্লস 28:58

0

এখানে দেরীতে হলেও আমি একটি সুনির্দিষ্ট সংজ্ঞা তৈরি করার চেষ্টা করতে চাই: স্ট্যাটিক ফাংশন এমন ফাংশন যা অন্তর্ভুক্ত শ্রেণীর উদাহরণ বৈশিষ্ট্য / পদ্ধতিগুলি উল্লেখ করে না বা করতে পারে না।

কিছু ভাষায়, সি # এর মতো, স্ট্যাটিক ক্লাসে স্থির ক্ষেত্র বা বৈশিষ্ট্য থাকতে পারে, সুতরাং সেগুলি রাষ্ট্রের জন্য ব্যবহৃত হয় না তা বলা ঠিক নয়; একটি স্ট্যাটিক ফাংশন স্ট্যাটিক (গ্লোবাল) রাষ্ট্রের ব্যবহার করতে পারে।

মূলত, এটি নিচে ফোটে: স্থির কিছু যেমন স্থির ফাংশনগুলি কার্যকর হয় যখন তাদের পক্ষে সর্বদা অ স্থির দৃষ্টান্তের উপর নির্ভরতা না থাকার জন্য উপলব্ধ থাকে।

সাহায্যকারী ফাংশন, যেমন গণিত ফাংশনগুলি একটি অতুলনীয় উদাহরণ, তবে আরও কিছু রয়েছে।

আপনার তৈরি করা শ্রেণীর যদি ডেটাটি অপরিবর্তনীয় হওয়ার প্রয়োজন হয়, তবে উদাহরণটি পরিবর্তিত হতে পারে না (বা হওয়া উচিত নয়) যেহেতু উদাহরণটি গ্রহণ করা যায় এমন স্ট্যাটিক ফাংশন তৈরি করা এবং একটি নতুন উদাহরণ পাস করা বুদ্ধিমান হতে পারে। স্ট্রিং ক্লাসগুলির উদাহরণস্বরূপ, স্ট্যাটিক ফাংশন থাকতে পারে যা স্ট্রিং (বা 2 বা ততোধিক) গ্রহণ করে এবং একটি নতুন স্ট্রিং ফিরে দেয়।

আরেকটি কারণ হতে পারে যে এমন একটি শ্রেণি রয়েছে যা একটি বিশ্বব্যাপী রাষ্ট্র বা কোনও ধরণের ডেটা রাখে। স্থিতিশীল ফাংশন থাকতে পারে যা স্থির শ্রেণিতে স্ট্যাটিক বৈশিষ্ট্য বা ক্ষেত্রগুলির সাথে কাজ করে।


0

আমি স্থিতিশীল চ এর অন্য ব্যবহারটি নির্দেশ করতে চাই।

http://www.parashift.com/c++-faq/named-ctor-idiom.html

এটিকে ফোটায়: staticফাংশনগুলি আপনাকে "নামযুক্ত কনস্ট্রাক্টর" তৈরি করতে দেয়, যেমন আপনি নিজের স্থির ফাংশনটির নাম যথাযথ এবং স্ব-ডকুমেন্টিং নাম দিয়ে রাখেন এবং এই স্থির ফাংশনটি নির্মাণকারীদের মধ্যে একটিকে কল করে (যেহেতু কনস্ট্রাক্টরের অভিন্ন নাম রয়েছে, এবং আপনার কাছে একটি থাকতে পারে) তাদের মধ্যে অনেক কিছুই তাদের মধ্যে পার্থক্য করা শক্ত হয়ে যায়)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.