首页 > 编程语言 >3.22 c++提高 4day

3.22 c++提高 4day

时间:2023-03-22 22:13:07浏览次数:50  
标签:4day int void c++ 3.22 zz printf test public

1.对象模型
成员函数不占用对象的内存 -
那么他们如何找到对象的成员呢 因为虽然不是默认传参 但是编译器会传入 this指针 来指向成员
21: a.test();
007E40B7 lea ecx,[a]
007E40BA call to::test (07E13BBh)

2.this -》this指针
1.使得对应的成员函数找到成员
2.变量形参同名
this.a=a;

2.返回对象本身

include

using namespace std;
cclass to
{
public:
int a = 10;
void test(int a)
{
this->a = a;
}
to retun()
{
return *this;
}
};
int main()
{
to a;
a.retun();

}

问题
1.静态成员变量(类)
printf("%d", to::a);
002A1921 mov eax,dword ptr [to::a (02AA014h)]
002A1926 push eax
不占用成员函数的大小 由一个固定地址保存
2.this指向
//this==calssname * const this 指向无法改变
3.常函数
1.无法修改成员变量
2.可以修改静态成员变量--不在其成员中是可以改的
3.不能修改this指向的内容
const 类 const this;
class to
{
public:
static int a;
int b;
int c;
void test() const
{

	a = 100;

}

};
int to::a = 0x122;
int main()
{
to pp;
pp.test();
printf("%d", to::a);

}

1.常对象
1.不能改变常成员对象的值
class to
{
public:
const int a = 100;
void test()
{
printf("%d", a);
}
};

int main()
{
to pp;

}

友元 关系
友元函数用途
1.运算符重载的某些场合
2.外部函数需要访问私有成元 或者类与类交换
3.传参访问私有 类内指针访问
class to
{
friend void test();
public:
string rty = "卧室";

private:
string book = "卫生间";

};

void test()
{
to zz;
printf("%s", zz.book);

}
int main()
{
test();

}
友元类

include

using namespace std;

class to
{
friend class to2 ;
friend void test();
public:
string rty = "卧室";

private:
int book = 12;

};

class to2
{
public:
void test(to* mu)
{
printf("%d", mu->book);
}

};

int main()
{
to qq;
to2 zz;
zz.test(&qq);

}

类的友元函数

友元注意
1.关系不能继承 2.单向关系 3.无传递性

单例模式
1.一个类只能实例化一个对象

include

using namespace std;

class to
{
public:
static to* zza()
{
return zz;
}
private:
to()
{
printf("我是0");
}
~to()
{
printf("我是1");
}
to(const to& m)
{
printf("我是2");
}
static to* zz;
};

to* to::zz = new to;
int main()
{
/// 获取到开辟的对象
to* qut = to::zza();
}

标签:4day,int,void,c++,3.22,zz,printf,test,public
From: https://www.cnblogs.com/Agtw/p/17245656.html

相关文章

  • 2023.3.22
     结对作业前两个功能做出最后的更新与调试,对最短路径问题的讨论和解决,并且进行了代码的完善,对辅助功能的完善。......
  • 2023.3.22每日总结
    importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassT......
  • 3.22 - 快手日常实习一面
     一、八股1.HTTPS和HTTP2.判断相等的方法、区别一共三种:==、===和Object.is() ==:双方类型不同时会强制转换。 强制转换规则:两个基础类型进行比较时,都转换成数字类......
  • C++ 程序设计 第6章 多态与虚函数
    第6章多态与虚函数1多态的基本概念运用封装继承多态能够有效提高程序的可读性,可扩充性,可重用性。多态从字面上理解就是多种形态或多种形式。具体到C++这种面向对象程序......
  • flower in 3.22
    从wuha回来,累的要噶了。wuha集训总体是摆。给我印象比较深刻的是三件事:joke3579的蜜雪冰城,给BE来了一点surprise,还有昨天晚上的团建。我确实一直在根据自己的思考......
  • 第4章 C++语言高级专题二
    单继承​ 继承性是面向对象程序设计中最重要的机制。这种机制提供了无限重复利用程序资源的一种途径。通过C++语言中的集成机制,可以扩展和完善旧的程序设计与适应新的需求......
  • 【C++】简答题
    1:指针(*)、引用(&)、解引用(*)、取地址(&)的概念和区别概念:指针指向一块内存,指针保存的内存的地址;引用是变量的别名,本质是引用该变量的地址。解引用是取指针指向的地址......
  • 3.22总结
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>Inserttitleh......
  • 算法笔记的笔记——第6章 C++标准模板库(STL)
    vector变长数组长度根据需要而自动改变的数组可以用来以邻接表的方式储存图使用头文件:#include<vector>命名空间:usingnamespacestd;定义vector<typename>n......
  • C++直接初始化和复制初始化
    引言在C++98中有两种变量初始化方式:直接初始化和复制初始化(拷贝初始化)。这两种初始化方式有着明显的差异,却由于编译器的优化而变得模糊。直接初始化语法形式:objType......