C风格强制转换 和 static_cast的差别
class CPerson
{
public:
void Show()
{
std::cout<<"CPerson()!"<<std::endl;
}
};
class CStudent : private CPerson
{
};
int _tmain(int argc, _TCHAR* argv[])
{
CStudent* stu1 = new CStudent();
//stu1->Show(); //1. 编译不通过 可以理解
//CPerson* per2 = static_cast<CPerson*>(stu1); //2. 编译不通过 无法理解
//per2->Show();
CPerson* ppson = (CPerson*)stu1; // 3. 编译通过
ppson->Show();
return 0;
}
学生认为在这样的情况下2和3是会发生一样的转换,但事实却不是
学生学习当中请高手解释下情况2 和情况3 转换流程,学生不胜感激!
{
public:
void Show()
{
std::cout<<"CPerson()!"<<std::endl;
}
};
class CStudent : private CPerson
{
};
int _tmain(int argc, _TCHAR* argv[])
{
CStudent* stu1 = new CStudent();
//stu1->Show(); //1. 编译不通过 可以理解
//CPerson* per2 = static_cast<CPerson*>(stu1); //2. 编译不通过 无法理解
//per2->Show();
CPerson* ppson = (CPerson*)stu1; // 3. 编译通过
ppson->Show();
return 0;
}
学生认为在这样的情况下2和3是会发生一样的转换,但事实却不是
学生学习当中请高手解释下情况2 和情况3 转换流程,学生不胜感激!
...全文
相关推荐
计算机二级c++之C++与C语言的区别.pdf
为此,就要使用强制类型转换说明,格式如下:int* iptr=(int*)&table;表达式的前缀(int*)就是传统C风格的强制类型转换说明(typecast),又可称为强制转换说明(cast)。
二级C++复习资料.docx
三、关键字和变量C++相对与C增加了一些关键字,如typename、bool、dynamic_cast、mutable、namespace、static_cast、using、catch、explicit
fengmian123
fengmian123
QYR-18900-2026-2032全球与中国智能旋转导向钻井系统市场现状及未来发展趋势 Sample-shijunzhong.docx
QYR-18900-2026-2032全球与中国智能旋转导向钻井系统市场现状及未来发展趋势 Sample-shijunzhong.docx
XERJ 是一款受到社区信赖的本地 AI 搜索引擎
XERJ 是一款受到社区信赖的本地 AI 搜索引擎,能自动为任意文件夹建立索引,让编程智能体直接检索所需代码,省去逐个读取文件消耗的 token。它的主要用途是参考现有实现来写代码(reference coding):接到任务后,智能体下载与任务相关的开源仓库,建立索引,再查阅这些项目的解决方法。 在一项对照研究中,这种做法让智能体的输出 token 用量降至原来的约 1/2.7,同时保持 16/16 的任务完成率(案例研究)。用户在日常开发中报告的用量约为原来的 1/5(使用反馈)。有了可检索的参考实现,较小、较便宜的模型也可能胜过只凭记忆工作的昂贵模型,减少反复修改的次数。把下面这段提示词交给智能体即可开始


