::和->在C++的含义

表示作用域,和所属关系
比如
class A
{
  public:
    int test();
}

int A::test()//表示test是属于A的
{
 return 0;
}

类似的还有其他,就不列举了
--------------------
比如
int a;

void test ()
{
  int a = ::a;//用全局变量a,给本地变量a赋值
}

:: 是运算符中等级最高的,它分为三种:
1)global scope(全局作用域符),用法(::name)
2)class scope(类作用域符),用法(class::name)
3)namespace scope(命名空间作用域符),用法(namespace::name)
他们都是左关联(left-associativity)
他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想调用全局变量a,那么就写成::a,如果想调用class A中的成员变量a,那么就写成A::a,另外一个如果想调用namespace std中的cout成员,你就写成std::cout(相当于using namespace
std;cout)意思是在这里我想用cout对象是命名空间std中的cout(即就是标准库里边的cout)
他们算是C++中的基础,如果运用的好的话,你程序的出错率也许会降很多,

c++中 -> 是什么意思,如何使用

在程序中多次出现如下代码:

memory->destroy (BOP_index);
memory->create (BOP_index,nall,"BOP_index");

还有

int *tag = atom->tag;
int timestep = update->ntimestep;
int newton_pair = force->newton_pair;

很困惑->在这里是什么意思,有什么作用,请高手解答

->是指针的指向运算符,通常与结构体一起使用。

具体使用方法可以参考如下程序:

#include<stdio.h>
struct stu   // 定义一个结构体
{
    char name[10];  // 姓名
    int num;  // 学号
    int age;  // 年龄
};
void main()
{
    struct stu *s;   // 定义一个结构体指针
    char str[]="ZhangLi";
    s->name = str;     // 对结构体中的成员变量name进行赋值
    s->num = 2015120;  // 对结构体中的成员变量num进行赋值
    s->age = 18;       // 对结构体中的成员变量age进行赋值
}

 

初学MFC,一个符号的疑惑
 

void CScribDoc::Serialize(CArchive& ar)
{
  if (ar.IsStoring())
    ar << m_sizeDoc;
  else
    ar >> m_sizeDoc;
m_graphList.Serialize(ar);
}

如上面的函数,“<<” 和 ">>",这两个符号在c++里不是输入输出用的么,这里又是什么意思呢?迷惑..
------解决方案--------------------
你可以把它看做是数据流的写入和写出,这只有在数据的序列化中这么使用
------解决方案--------------------
CArchive类重载了operator << 和operator <<操作符
------解决方案--------------------
对的,<< 和 >> 本是 C++ 里面的 插入操作符 和 提取操作符 。
插入操作符 << 的作用是将它后面的内容插入到标准输出流中以便输出,而提取操作符 >> 的作用是从标准输入流中提取数据并存储到它后面的变量中。
根据我的理解,
所谓输入,就是程序运行的时候,从程序的外部拿数据进来使之成为程序自己的东西;
所谓输出,就是程序运行的时候,把程序自己的数据送给外部以供外部来使用。
下面的一段 C++ 代码说明了这两个操作符的用法:

<span style="color:#000000">

#include <iostream.h>

void main()

{

    int a;

    cout<<"Please enter an integer:\n";

    cin>>a;

    cout<<"a: "<<a<<endl;

}</span>



再来说说你的这个代码:

<span style="color:#000000">void CScribDoc::Serialize(CArchive& ar)

 {

   if (ar.IsStoring()) //如果是在存储归档文件(也就是把数据存储到文档中)

     ar << m_sizeDoc; //那么就将 m_sizeDoc 变量插入输出流中。这里输出流对象是 CArchive 类的对象 ar ,并且通常情况下 ar 已经和某个特定的文档关联起来了,那么将变量插入输出流中,就是将变量的值写入文档

   else //如果当前是在读取归档文件(也就是从文档中读取数据)

     ar >> m_sizeDoc; //同上。这里输入流对象是 ar ,那么就是从 ar 中提取数据并将数据保存到 m_sizeDoc 变量中

 m_graphList.Serialize(ar); //调用 m_graphList 的 Serialize 函数

 }

</span>


------解决方案--------------------

引用:

void CScribDoc::Serialize(CArchive& ar)
{
  if (ar.IsStoring())
    ar  << m_sizeDoc;
  else
    ar  >> m_sizeDoc;
m_graphList.Serialize(ar);
}

如上面的函数,“<<” 和 ">>",这两个符号在c++里不是输入输出用的么,这里又是什么意思呢?迷惑..


CArchive重写了这两个操作符。
------解决方案--------------------
和cin,cout是一个意思。
------解决方案--------------------
序列号类重载了这两个操作符
------解决方案--------------------
在这里,还是输入输出的意思

发布了54 篇原创文章 · 获赞 44 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/txpp520/article/details/103221410