C++解惑
最近正在看C++。不过有几个问题想请教高手帮我一下。
1:C++的命名空间怎么用
2:我以前学的c现在看c++之后觉得结构体这种数据类型可以在C++中去除。因为类中已经集成了各种基本数据类型。我认为可以代替结构体。而且在类中定义结构体的话,访问结构体中的数据成员时恐怕也不方便。可是我翻了好几本关于C++的书。书中都介绍了结构体这种数据类型。很不解。求指教!!!
[解决办法]
C++兼容了C大部分,所以对结构体也进行了介绍
在纯C++中,struct完全可以替代class
[解决办法]
struct和class的唯一区别就是,class的成员默认是private 而struct默认的是public,不管变量还是函数
C++命名空间主要是为了区分不同代码库中重名的对象,在类定义时前面加个
namespace AAA
{class BBB
{}
}
namespace CCC
{class BBB
{}
}
用的时候,可以 AAA.BBB 和CCC.BBB以区分两个namespace的两个同名类
[解决办法]
刚才说错了,用的时候
是在前面加上
#include ".h"//BBB所在的头文件
using AAA::BBB;
using CCC::BBB;
在程序中就可以用了
AAA::BBB或CCC::BBB
[解决办法]
命名空间主要是解决重名的问题。
至于结构体,struct和class唯一的区别就是默认成员是否是public。C++保留struct,主要是为了与C兼容。
[解决办法]
其实在这的struct已不再是当年的那个c语言中的struct
以前的C中struct只可以放成员变量,没有访问权限限制,外部可以访问;
而现在的C++中struct用法对C中struct进行了扩展,功能与class类似,
可以放成员函数,可以被继承,所有成员数据默认权限为public,struct不可以定义无参的构造函数。
C++中Class默认权限为private,可以定义无参构造函数,struct主要在这些方面与其不同。
[解决办法]
struct除了默认成员访问权限跟class不一样外,跟class差不多。当然也可以定义无参的构造函数。