c++-this指针

使用this可以用来表示当前类的变量

复制代码
/*
string 字符串 
*/ 
#include <iostream>
#include <cstring>

using namespace std; 

class String {
public:
    String(const char* str) {
        m_str = new char[strlen(str)+1]; 
        strcpy(m_str, str); 
    }
    ~String(void) {
        cout << "析构函数" << endl; 
        delete m_str; 
    }
    //深拷贝 
    String(const String& that) {
        m_str = new char[strlen(that.m_str)+1]; 
        strcpy(m_str, that.m_str); 
    }
    void print(void) {
        cout << m_str << endl; 
    }
    const char* c_str(void) const {
        return m_str; 
    }

private:
    char* m_str; 

}; 

int main() {
    String s = "hello"; 
    cout << s.c_str() << endl; 
    String s1(s); 
    cout << s1.c_str() << endl; 
    

}
复制代码

使用this进行自引用

复制代码
/*
返回this进行自引用 
*/ 
#include <iostream>

using namespace std; 

class Counter {
public:
    Counter(int count = 0):m_count(count){} 
    void print(void) {
        cout << m_count << endl; 
    }
    Counter& add(void) {
        ++m_count; 
        return *this; 
    }
    void destory(void) {
        cout << "该类已经删除" << endl; 
        delete this; 
    }


private:
    int m_count; 
}; 


int main() {
    Counter c; 
    c.add().add().add(); 
    c.print(); 

    Counter *pc = new Counter; 
    pc->add(); 
    pc->print(); 
    cout << "pc" << pc << endl;
     pc->destory();  //delete pc; 

}
复制代码

两个类进行相互的调用 ,这里使用老师帮助学生,学生问老师,老师解答

复制代码
/*
两个类进行相互调用 
*/ 
#include <iostream>

using namespace std; 

class Student; 

class Teacher {
public:
    void eduate(Student s);
    void reply(void); 
};

class Student {
public:
    void ask(Teacher *t); 
};

void Teacher::eduate(Student that) {
    that.ask(this); 
}

void Student::ask(Teacher *t) {
    cout << "这里有多少个人" << endl; ; 
    t->reply(); 
}

void Teacher::reply(void) {
    cout << "这里有三个人" << endl; 

}

int main() {
    Teacher t; 
    Student s; 
    t.eduate(s); 
}
复制代码

 

posted @   c语言我的最爱  阅读(311)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示