#include<iostream>
using namespace std;

class cls
{
    int *p;

public:
    cls(int a);
    cls(const cls &ob);
    int g(){return *p;}
    friend int get(cls ob);

};

cls :: cls(int n)
{
    p = new int;
    if(!p){
        cout << "error" << endl;
        return ;
    }
    *p = n;
}

cls :: cls(const cls &ob)  // Copy Constructor
{
    cout << "Copy Constructor" << endl;
    p = new int;
    if(!p){
        cout << "error" << endl;
        return;
    }
    *p = *ob.p;
    // *p = ob.(*p); // "object_name.member_name" এভাবেই তো অবজেক্টের মেম্বারগুলোকে অ্যাকসেস 
                     // করতে হয়। তাহলে এখানে *p = ob.(*p); এভাবে কাজ করে না কেন?
                     // *p = *ob.p; এটা কীভাবে ঠিক?
}
int get(cls ob)
{
    return *ob.p;
    // return ob.(*p); // এখানেও একইরকম, return ob.(*p); কাজ করে না কেন?
}

int main()
{
    cls obj(10), ob(2);

    cout << obj.g() << "  " << ob.g() << endl << endl;

    cout << get(obj) << endl << endl;
    cout << get(ob) << endl;

    return 0;
}

asked 13 Sep, 19:18

Partho%20Debnath's gravatar image

Partho Debnath
233

edited 14 Sep, 06:21

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
1.1k18

এখানে ob.p পুরোটা মিলে একটি মেম্বার। অবজেক্ট ছাড়া অবজেক্টের মেম্বারের অস্তিত্ব নেই। তাই *ob.p-ই ঠিক আছে। ob.*p একটি ভিন্ন ধারণা, বিস্তারিত এখান থেকে পড়া যাবে।

(14 Sep, 15:17) Mosharraf Hosain ♦
Be the first one to answer this question!
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×139
×27

question asked: 13 Sep, 19:18

question was seen: 61 times

last updated: 14 Sep, 15:17