类和对象
Class and Objects
假设我有两个类Class A
和Class B
。
class A {
uint32 A_1;
uint32 A_2;
uint32 A_3;
uint32 A_4;
}
第一个问题:如何使uint_32 A_1, A_2, A_3, A_4
类A的类成员对从类B创建的对象可见?
//从B类创建的对象如下:
Object_B = new Class B();
我让A类成员对B类可见的语法如下第一个问题:
Class A(Class B *);
第二个问题:如何通过我创建的对象Object_B
访问A类的类成员(uint_32 A_1, A_2, A_3, A_4
(?
下面是第二个问题的语法:
Object_B->A_1;
上面两个类的语法正确吗?
此外,请为我提供一些C++中的类、对象的好链接,以便我能深入阅读。
new A( B * bPointer);
告诉我们类型A的对象拥有指向类型B的指针。这绝不会把B和A联系起来。
事实上,如果这是一个设计良好的类,那么B不应该知道A。这让你的第二个问题变得毫无意义。所以你应该问的一个重要问题是,你为什么想要这段关系。A和B之间的语义关系是什么?
这是一本书吗?
从链接:http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr129.htm
受保护的成员(仅限C++(
受保护的非静态基类成员可以由从该基类派生的任何类的成员和朋友使用以下方法之一访问:
指向直接或间接派生类的指针对直接或间接派生类的引用直接或间接派生类的对象
如果一个类是从基类私有派生的,则所有受保护的基类成员成为派生类的私有成员。
如果在友元或派生类B的成员函数中引用基类a的受保护非静态成员x,则必须通过指向从a派生的类的指针、引用或对象来访问x。但是,如果访问x以创建指向成员的指针,则必须使用嵌套的名称说明符来限定x,该名称说明符命名派生类B。以下示例说明了这一点:
class A {
public:
protected:
int i;
};
class B : public A {
friend void f(A*, B*);
void g(A*);
};
void f(A* pa, B* pb) {
// pa->i = 1;
pb->i = 2;
// int A::* point_i = &A::i;
int A::* point_i2 = &B::i;
}
void B::g(A* pa) {
// pa->i = 1;
i = 2;
// int A::* point_i = &A::i;
int A::* point_i2 = &B::i;
}
void h(A* pa, B* pb) {
// pa->i = 1;
// pb->i = 2;
}
int main() { }
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象