可能重复:
对象和基本类型的分配
a = [1,2,3]
b = a
print b is a
Run Code Online (Sandbox Code Playgroud)
此代码打印True.为什么?如果两个变量指向同一个对象,则"is"仅返回True,在这种情况下,它们是具有相同值的不同对象."=="将返回True,但"is"不应该返回True.
但是,自从
b.reverse()
print a,b
Run Code Online (Sandbox Code Playgroud)
打印[3,2,1] [3,2,1],似乎就解释器而言,它们是相同的对象,并且b上的操作将自动在a上执行.再次,为什么?我以前从未见过这样的事情.
我的一个作业涉及三个文件:LineType.h,LineType.cpp和Driver.cpp.Driver.cpp包含main()方法,该方法使用LineType.h和LineType.cpp定义的类.
在我的系统上,Driver.cpp以:
#include "LineType.h"
#include "LineType.cpp"
#include <iostream>
Run Code Online (Sandbox Code Playgroud)
当我g++ Driver.cpp通过命令行在项目目录中运行时,程序编译并运行完美.但是,当我的教师尝试编译程序时(我相信她使用Eclipse),它无法编译.经过一番来回,她能够通过评论一个来自Driver.cpp的#includes来解决问题:
#include "LineType.h"
//#include "LineType.cpp"
#include <iostream>
Run Code Online (Sandbox Code Playgroud)
当我尝试g++ Driver.cpp在这个编辑过的文件上运行时,我的编译器抱怨"未定义的体系结构符号",我理解这意味着它无法找到被调用的类/方法的定义.
什么是我的导师和我做出不同的行为导致这种差异?为什么我的编译器需要一行导致她的编译器失败?