Menu
Coddy logo textTech

מצביע this

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C++ של Coddy. שיעור 7 מתוך 104.

ב־C++, this הוא מצביע לאובייקט הנוכחי. השתמשו ב־this-> כדי לגשת לחברים, במיוחד כאשר שמות הפרמטרים תואמים לשמות החברים.

ללא this, הפרמטר מסתיר את איבר המחלקה

void Player::setName(std::string name) {
    name = name;  // מקצה את הפרמטר לעצמו! שדה המחלקה נותר ללא שינוי.
}

שימוש ב־this-> כדי להקצות ערכים בצורה נכונה

void Player::setName(std::string name) {
    this->name = name;  // מקצה את הפרמטר לשדה המחלקה
}

שימוש ב־this-> במתודות

std::string Player::getStatus() {
    return this->name + " - Score: " + std::to_string(this->score);
}

המצביע this תמיד מצביע על מופע האובייקט הנוכחי. בניגוד ל-Java ול-C#, שבהן this הוא הפניה, ב-C++ הוא מצביע, ולכן משתמשים ב--> במקום ב-. כדי לגשת לחברים.

challenge icon

אתגר

בינוני

ממש את המתודות של המחלקה Player באמצעות this-> כדי להבחין בין שדות לפרמטרים בעלי אותו שם:

  • מתודות setter: השתמש ב-this-> כדי להציב את הפרמטרים בשדות
  • getStatus(): השתמש ב-this-> כדי לגשת לשדות, והחזר "<name> - Score: <score>, Level: <level>"

נסו בעצמכם

#include <iostream>
#include "Player.h"

int main() {
    std::string name;
    int score, level;
    std::getline(std::cin, name);
    std::cin >> score >> level;
    
    Player player;
    player.setName(name);
    player.setScore(score);
    player.setLevel(level);
    
    std::cout << "Name: " << player.name << std::endl;
    std::cout << "Score: " << player.score << std::endl;
    std::cout << "Level: " << player.level << std::endl;
    std::cout << player.getStatus() << std::endl;
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C++ אונליין