j*****I 发帖数: 2626 | 1 derived class里面的non-virtual function code在内存里是单独copy一份呢,还是
reuse base class的?
谢谢 | f*******n 发帖数: 12623 | 2 你是什么意思?你写一个function不会有“两份”的(除了template)。 | j*****I 发帖数: 2626 | 3 我的意思是同一个class的所有objects, function members在内存里是share的。但是
data member那份,各自有一份。
这个superclass和subclass是不是类似? subclass继承的那些non virtual function,
在内存里,实际上是指向superclass的?
【在 f*******n 的大作中提到】 : 你是什么意思?你写一个function不会有“两份”的(除了template)。
| d**********x 发帖数: 4083 | 4 非虚函数是静态绑定的。函数只有一份代码。
本质上你也可以说是“指向”superclass的,但是实际上并没有一个像虚函数表一样的
东西。
【在 j*****I 的大作中提到】 : 我的意思是同一个class的所有objects, function members在内存里是share的。但是 : data member那份,各自有一份。 : 这个superclass和subclass是不是类似? subclass继承的那些non virtual function, : 在内存里,实际上是指向superclass的?
| j*****I 发帖数: 2626 | 5 OK,就是说所有的non-virtual function call,compile的时候已经指向superclass了?
【在 d**********x 的大作中提到】 : 非虚函数是静态绑定的。函数只有一份代码。 : 本质上你也可以说是“指向”superclass的,但是实际上并没有一个像虚函数表一样的 : 东西。
| c*******y 发帖数: 1630 | 6 不确定的话,用debugger看看好了。或者
#include
class base{
public:
void test(){}
};
class derived: public base{
};
int main(){
printf("%p\n", &base::test);
printf("%p\n", &derived::test);
}
了?
【在 j*****I 的大作中提到】 : OK,就是说所有的non-virtual function call,compile的时候已经指向superclass了?
| m*******l 发帖数: 12782 | 7 this
了?
【在 j*****I 的大作中提到】 : OK,就是说所有的non-virtual function call,compile的时候已经指向superclass了?
| f*******n 发帖数: 12623 | 8 Yes, unless your class also implements the method, in which case it will
point to your class's method.
了?
【在 j*****I 的大作中提到】 : OK,就是说所有的non-virtual function call,compile的时候已经指向superclass了?
| j*****I 发帖数: 2626 | 9 这个this,我相信compiler会帮忙指向base class?!
【在 m*******l 的大作中提到】 : this : : 了?
| t****t 发帖数: 6806 | 10 我觉得问题是这样, 你不知道从哪里学了一堆似是而非的概念, 好象有点对, 又不完全
对. 你需要refresh一下class和inheritence的基本概念, 仔细读一下, 不要浏览. 你
可能需要inside c++ object model这样的书.
【在 j*****I 的大作中提到】 : 这个this,我相信compiler会帮忙指向base class?!
| | | d**********x 发帖数: 4083 | 11 同意。不知道如何说起
【在 t****t 的大作中提到】 : 我觉得问题是这样, 你不知道从哪里学了一堆似是而非的概念, 好象有点对, 又不完全 : 对. 你需要refresh一下class和inheritence的基本概念, 仔细读一下, 不要浏览. 你 : 可能需要inside c++ object model这样的书.
| c*******y 发帖数: 1630 | 12 这本对LZ有点太进阶了吧。
【在 t****t 的大作中提到】 : 我觉得问题是这样, 你不知道从哪里学了一堆似是而非的概念, 好象有点对, 又不完全 : 对. 你需要refresh一下class和inheritence的基本概念, 仔细读一下, 不要浏览. 你 : 可能需要inside c++ object model这样的书.
| j*****I 发帖数: 2626 | 13 我是哲学的高度来学习programming的。就像很多network application,多多少少都借
鉴不是这层就是那层的协议。 我,一厢情愿的相信,programming的设计者也借鉴了OS
的一些理念。
比如说,同一个executable的多个processes,共享一个code segment,但是有各自的
data segment. 这一点很像同一个class的不同objects,共享function members,但是有
各自的data members.
不同process之间有protection,是因为address space就不同。这一点是不是很象class
的protection的idea?
如果这两者之间真的有如此的同一性,是不是借鉴OS设计的可以更好帮助理解
programming language的idea? 你说我的那些似是而非的东西,多半都是从这来的。
【在 t****t 的大作中提到】 : 我觉得问题是这样, 你不知道从哪里学了一堆似是而非的概念, 好象有点对, 又不完全 : 对. 你需要refresh一下class和inheritence的基本概念, 仔细读一下, 不要浏览. 你 : 可能需要inside c++ object model这样的书.
| Zs 发帖数: 225 | 14 你...是不是
不是科班出身的啊...
OS
class
。
【在 j*****I 的大作中提到】 : 我是哲学的高度来学习programming的。就像很多network application,多多少少都借 : 鉴不是这层就是那层的协议。 我,一厢情愿的相信,programming的设计者也借鉴了OS : 的一些理念。 : 比如说,同一个executable的多个processes,共享一个code segment,但是有各自的 : data segment. 这一点很像同一个class的不同objects,共享function members,但是有 : 各自的data members. : 不同process之间有protection,是因为address space就不同。这一点是不是很象class : 的protection的idea? : 如果这两者之间真的有如此的同一性,是不是借鉴OS设计的可以更好帮助理解 : programming language的idea? 你说我的那些似是而非的东西,多半都是从这来的。
| d**********x 发帖数: 4083 | 15 学哲学的。。
【在 Zs 的大作中提到】 : 你...是不是 : 不是科班出身的啊... : : OS : class : 。
| t****t 发帖数: 6806 | 16 从高处看本来是没有错的, 但是前提是你要有一个扎实的基础. 比如说, 你的C++学得
很好, 理解很深, 那你学OS的时候可以借鉴C++的思想. 或者反过来, 你自己用C写过一
个OS, 那你学JAVA或者C++的时候可以借鉴OS的思想.
但是你明显根本没有基础, 从高处看是不可能的.
OS
class
。
【在 j*****I 的大作中提到】 : 我是哲学的高度来学习programming的。就像很多network application,多多少少都借 : 鉴不是这层就是那层的协议。 我,一厢情愿的相信,programming的设计者也借鉴了OS : 的一些理念。 : 比如说,同一个executable的多个processes,共享一个code segment,但是有各自的 : data segment. 这一点很像同一个class的不同objects,共享function members,但是有 : 各自的data members. : 不同process之间有protection,是因为address space就不同。这一点是不是很象class : 的protection的idea? : 如果这两者之间真的有如此的同一性,是不是借鉴OS设计的可以更好帮助理解 : programming language的idea? 你说我的那些似是而非的东西,多半都是从这来的。
| t****t 发帖数: 6806 | 17 by the way, process之间的protection和C++的class access restriction根本是两回
事, 你完完全全搞错了. 这个我之前讲过, C++的access control和security完全无关.
所以你看, 你学习的方向根本就是不对的.
OS
class
。
【在 j*****I 的大作中提到】 : 我是哲学的高度来学习programming的。就像很多network application,多多少少都借 : 鉴不是这层就是那层的协议。 我,一厢情愿的相信,programming的设计者也借鉴了OS : 的一些理念。 : 比如说,同一个executable的多个processes,共享一个code segment,但是有各自的 : data segment. 这一点很像同一个class的不同objects,共享function members,但是有 : 各自的data members. : 不同process之间有protection,是因为address space就不同。这一点是不是很象class : 的protection的idea? : 如果这两者之间真的有如此的同一性,是不是借鉴OS设计的可以更好帮助理解 : programming language的idea? 你说我的那些似是而非的东西,多半都是从这来的。
| m*******l 发帖数: 12782 | 18 哲学同学,
你应该学庖丁接牛
先深,再浅, 再深, 再浅...
所谓先达到见山是山,然后见山不是山,然后见山还是山...
【在 j*****I 的大作中提到】 : 我是哲学的高度来学习programming的。就像很多network application,多多少少都借 : 鉴不是这层就是那层的协议。 我,一厢情愿的相信,programming的设计者也借鉴了OS : 的一些理念。 : 比如说,同一个executable的多个processes,共享一个code segment,但是有各自的 : data segment. 这一点很像同一个class的不同objects,共享function members,但是有 : 各自的data members. : 不同process之间有protection,是因为address space就不同。这一点是不是很象class : 的protection的idea? : 如果这两者之间真的有如此的同一性,是不是借鉴OS设计的可以更好帮助理解 : programming language的idea? 你说我的那些似是而非的东西,多半都是从这来的。
| j*****I 发帖数: 2626 | 19 扯远了。各位担待吧。
【在 m*******l 的大作中提到】 : 哲学同学, : 你应该学庖丁接牛 : 先深,再浅, 再深, 再浅... : 所谓先达到见山是山,然后见山不是山,然后见山还是山...
| n******t 发帖数: 4406 | 20 这和科班有毛关系.
【在 Zs 的大作中提到】 : 你...是不是 : 不是科班出身的啊... : : OS : class : 。
|
|