- 主题:c++ 定义变量语法,这个很少见
同问?
【 在 here080 的大作中提到: 】
: 啥叫肥指针?
: 【 在 lambdai 的大作中提到: 】
: : 我都不知道这个指针是不是个肥指针
: ....................
--
FROM 219.136.205.*
我不是编译器专家,但是我感觉上这个不能识别很正常。
一个非常类似的例子:
MyClass* p;
编译器在处理这个声明的时候都不需要知道MyClass类是什么样的,只需要一个前置声明。
【 在 gpmn 的大作中提到: 】
: B里面都没有A类型的成员变量,编译器就不能识别出来吗
:
--
FROM 76.126.252.*
我从来没见人用过。类里面要真有那么多同类型成员变量,需要选择的话,为什么不扔数组里呢?
猜测就是因为有成员函数指针(好歹还有点用),所以为了无聊的正交原则,就非得有成员变量指针。
其实成员函数指针也不是指针,没有指向具体的成员函数,只是虚表的一个下标。它就不该叫指针以及用指针语法。
下标用下标的语法不好吗
obj.[member_selector]()
【 在 here080 的大作中提到: 】
: 这是一个冷门的语法。
: A B::* p;
: 这是声明一个“成员变量指针”。这个指针可以指向B里的A类型成员变量。
: ...................
--
FROM 58.37.58.*
我瞎编的:)
不过有些看着像是指针的东西是比void*大一些的
struct A {};
cout << "A:" << sizeof(int (A::*)); // 8
cout << "A:" << sizeof(void (A::*)()); // 16
【 在 here080 的大作中提到: 】
: 啥叫肥指针?
--
FROM 221.220.134.*
我也没用过这个功能,所以给不出评价。
【 在 ilovecpp 的大作中提到: 】
: 我从来没见人用过。类里面要真有那么多同类型成员变量,需要选择的话,为什么不扔数组里呢?
: 猜测就是因为有成员函数指针(好歹还有点用),所以为了无聊的正交原则,就非得有成员变量指针。
: 其实成员函数指针也不是指针,没有指向具体的成员函数,只是虚表的一个下标。它就不该叫指针以及用指针语法。
: ...................
--
FROM 76.126.252.*
哈哈,我最近用过。
序列化的代码,定义成员变量的类模板<UrclassT, memberT>,声明指针,UrClassT::memberT* p,指向某个成员变量,可以get/get。
客户代码提前注册每个成员变量。
【 在 ilovecpp 的大作中提到: 】
: 我从来没见人用过。类里面要真有那么多同类型成员变量,需要选择的话,为什么不扔数组里呢?猜测就是因为有成员函数指针(好歹还 ...
--
FROM 1.80.221.*
用offsetof宏是不是也可以?继承场景下会有区别吗,好像也没有。
offsetof结果就是个整数,不像成员指针带着对象类型,前者代码膨胀可能都小很多。
【 在 DoorWay 的大作中提到: 】
: 哈哈,我最近用过。
:
: 序列化的代码,定义成员变量的类模板<UrclassT, memberT>,声明指针,UrClassT::memberT* p,指向某个成员变量,可以get/get。
: ...................
--
修改:ilovecpp FROM 101.82.65.*
FROM 101.82.65.*
没学过C,从cpp开始学编程,学的也不精,面向对象思维根深蒂固。
大概知道你说的是什么,根据类内存布局,sizeof(T)偏移,
还考虑8字节对齐、先bool再double,末尾放个char[0]?
一直没掌握。老派程序员的世界。
【 在 ilovecpp 的大作中提到: 】
: 用offsetof宏是不是也可以?继承场景下会有区别吗,好像也没有。
: offsetof结果就是个整数,不像成员指针带着对象类型,前者代码膨胀可能都小很多。
--
FROM 1.86.56.*
不我觉得你不知道。不如把你说的序列化代码写一段例子出来看看。
【 在 DoorWay 的大作中提到: 】
: 没学过C,从cpp开始学编程,学的也不精,面向对象思维根深蒂固。
: 大概知道你说的是什么,根据类内存布局,sizeof(T)偏移,
: 还考虑8字节对齐、先bool再double,末尾放个char[0]?
: ...................
--
FROM 58.37.58.*
https://eliasdaler.github.io/meta-stuff/照着这个写的,精简后就200行。看他github上的源码更直接。
我模仿了他的思路,tuple + index_sequence,前面的函数指针
只是个细节。
我的主要工作是特化类型,对接我用的平台数据类型和序列化接口。
你发个offset的链接。
【 在 ilovecpp 的大作中提到: 】
: 不我觉得你不知道。不如把你说的序列化代码写一段例子出来看看。
--
FROM 1.86.56.*