C/C++ 知识点

助记

关于 this:
this 相当于 * const this; //指向不可更改
关于cstring(常量指针): 指向可以更改,指向的内容不可以更改

string hello = "hello";
string hello2 = "hello2";
const char * hello = hello.c_str() //指向可以更改,/内容不可更改
hello = hello.c_str();//正确

指针常量

int a1 = 10;
int * const a1_prt =&a1; //声明必须初始化,因为指向不能更改,内容可以更改
*a1_prt = 20;

关于friend

全局函数友元

#include "iostream"
#include "string"
using namespace std;
class Building{//建筑物
//告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容
friend void goodGay(Building * building);
public:
string m_SittingRoom;//客厅
Building(){
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
private:
string m_BedRoom;//卧室
};
void goodGay(Building * building){
cout<<building->m_SittingRoom<<endl;
cout<<building->m_BedRoom<<endl;
}
void test01(){
Building building;
goodGay(&building);
}
int main(){
test01();
return 0;
}

类友元

#include "iostream"
#include "string"
using namespace std;
class Building;
class GoodGay{
public:
GoodGay();
~GoodGay();
void visit(); //访问Building内的属性(public and private)
private:
Building *building;
};
class Building{
//告诉编译器GoodGay类是Building类的好朋友,可以访问Building类私有内容
friend class GoodGay;
public:
Building();
void HelloVisit();
public:
string m_SittingRoom; //客厅
private:
string m_BedRoom; //卧室
};
Building::Building(){
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
void Building::HelloVisit() {
cout << "HelloVisit() 函数中的m_SittingRoom = " << m_SittingRoom << endl;
cout << "HelloVisit() 函数中的m_BedRoom = " << m_BedRoom << endl;
}
GoodGay::GoodGay(){
building = new Building;
}
void GoodGay::visit() {
cout << "GoodGay类中的visit()函数中的m_SittingRoom = " << building->m_SittingRoom <<endl;
cout << "GoodGay类中的visit()函数中的m_bedRoom = " << building->m_BedRoom <<endl;
}
GoodGay::~GoodGay() {
if(building!= nullptr){
delete building;
building = nullptr;
}
}
void test(){
auto * g = new GoodGay ;
g->visit();
delete g;
}
int main() {
test();
return 0;
}

成员函数友元

#include "iostream"
using namespace std;
class Building;
class GoodGay
{
public:
GoodGay();
~GoodGay();
void visit();////只让visit函数作为Building的好朋友,可以发访问Building中私有内容
void visit2();
private:
Building *building;
};
class Building{
friend void GoodGay::visit();
public:
Building()
{
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
private:
string m_SittingRoom;
string m_BedRoom;
};
GoodGay::GoodGay() {
building = new Building;
}
GoodGay::~GoodGay() {
if(building != NULL)
{
delete building;
building = nullptr;
}
}
void GoodGay::visit() {
cout<<"好基友正在访问:"<<building->m_SittingRoom<<endl;
cout<<"好基友正在访问:"<<building->m_BedRoom<<endl;
}
void test3(){
auto * g =new GoodGay;
g->visit();
delete g;
}
int main(){
test3();
return 0;
}
posted @   一个小笨蛋  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示