Что происходит в C++, когда я передаю объект по ссылке и он выходит из области действия?

Я думаю, что этот вопрос лучше задать с небольшим фрагментом кода, который я только что написал:

#include 

using namespace std;

class BasicClass
{
public:
    BasicClass()
    {
    }
    void print()
    {
        cout << "I'm printing" << endl;
    }
};

class FriendlyClass
{
public:
    FriendlyClass(BasicClass& myFriend) :
        _myFriend(myFriend)
    {
    }
    void printFriend()
    {
        cout << "Printing my friend: ";
        _myFriend.print();
    }
private:
    BasicClass& _myFriend;
};

int main(int argv, char** argc)
{
    FriendlyClass* fc;
    {
        BasicClass bc;
        fc = new FriendlyClass(bc);
        fc->printFriend();
    }
    fc->printFriend();
    delete fc;
    return 0;
}

Код компилируется и работает нормально, используя g++:

$ g++ test.cc -o test
$ ./test
Printing my friend: I'm printing
Printing my friend: I'm printing

Однако, это не то поведение, которое я ожидал. Я ожидал какого-то сбоя при втором вызове fc- > printFriend () . Является ли мое понимание того, как передача/хранение по ссылке работает неправильно или это то, что просто происходит, чтобы работать в небольшом масштабе и, вероятно, взорваться в более сложном приложении?

-121--1217215-

Как кнопка не показывать счетчики Это происходит в любом веб-браузере. Когда я захожу на страницу, я вижу кнопку «Нравится», не показывая ни одного счета. Тогда я... Нажмите кнопку «Нравится». Тогда я вижу коробку + 1. Я обновлю страницу. Я больше не...

Это происходит в любом веб-браузере. Когда я захожу на страницу, я вижу кнопку «Нравится», не показывая ни одного счета. Тогда я...

  1. Нажмите кнопку «Нравится».
  2. Тогда я вижу коробку + 1.
  3. Обновлю страницу.
  4. Я больше не вижу + 1 и вижу кнопку «Нравится», как будто она никогда не нажималась.

Я могу бесконечно повторять шаги 1-4 с теми же результатами - я никогда не вижу общего числа в прямом эфире.

Кажется, что это не ведет счет, но когда я запрашиваю его через:

https://api.facebook.com/method/fql.query?query=select total_count,like_count,comment_count,share_count,click_count из link_stat, где url = 'https://www.myswebsite.com/' & format = json

я вижу live stats - так что я знаю, что это работает. Я также пробовал различные варианты http://developers.facebook.com/docs/reference/plugins/like/ - и старые версии. Я изолировал код, чтобы просто быть кодом Facebook, и больше ничего на странице. Почему-то, когда я использую https://www.myswebsite.com/ это не показывает. Я пробую другие URL-адреса, как http://www.google.com с кодом, и это работает нормально, я могу видеть подсчет.

Это веб-сайт SSL. Это как-то связано с этим? Также, когда мы изначально запустили сайт с кнопкой Like, он был http://mywebsite.com изначально. Затем мы переключили его на http://www.myswebsite.com , а затем установили подстановочный символ SSL для работы с обоими. Я не уверен, что кэширование связано с этим.

Спасибо!

6
задан om-nom-nom 21 March 2012 в 11:16
поделиться