考虑这个类。班级成员总是作为一致性的指针?
#pragma once
#include <memory>
#include <string>
class A;
class B;
class Test
{
public:
Test();
~Test();
private:
std::unique_ptr<A> m_a;
std::unique_ptr<B> m_b;
std::unique_ptr<std::string> m_string1; // 1
std::string m_string2; // 2
};
我总是尝试在头文件中转发声明类。但是,我不会那样做标准头文件,向前声明模板类的typedef只是很痛苦。无论如何,如果我有标题可用 - 我应该更喜欢第一种方式还是第二种方式 - m_string1
或m_string2
?我觉得如果我混合使用指针和值类型,那么它看起来不一致。把所有东西都作为指针是一个好主意吗?
此问题属于http://www.codereview.stackexchange.com/。 – antonijn
我认为使用指向每个成员的指针可能会导致额外的空间 - 指针在64位系统中需要32位和8字节中的4个字节。简单的数据类型可以更好地存储为值。 – cppcoder
@cppcoder:它可能是对齐使短类型被存储到相同的长空间......很难说何时(而不是)这是真的。 –