您的位置:首页 > 编程语言 > C语言/C++

effective c++ 笔记之static_cast

2015-11-29 14:32 337 查看
尽量少用转型动作章节中讲到。子类执行的f并不是在当前对象上执行父类函数,只是在base class的副本上执行。那么

如下执行后,副本值被改写,而d的i依然是初始化时候的0

#include <stdio.h>

#include <stdlib.h>

#include <iostream> // std::cout

#include <thread> // std::thread

class B{

public :

int i=0;

public:

void f(){

i=1;

}

};

class D:B{

public:

void f(){

static_cast<B>(*this).f();

//i=2;

}

void f1(){

int i2=static_cast<B>(*this).i;

i2=3;

}

void f2(){

int i2=i;

i2=3;

}

};

/*

* === FUNCTION =========================================================

* Name: main

* Description: program entry routine.

* ========================================================================

*/

int main(int argc, const char *argv[])

{

class D d;

d.f();

d.f1();

d.f2();

int a=1;

return EXIT_SUCCESS;

} /* ---------- end of function main ---------- */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: