__str__方法其实是在print()对象时调用,所以可以自己定义str字符串显示信息,在该方法return一个字符串,如果不是字符串则报错print(obj) 等同于-->str(obj) 等同于-->obj.__str__ #未自定__str__信息 class Foo: def __init__(self,name,age): self.name = name self.age = age f = Foo('Menawey',24) print(f) #<__main__.Foo
先说点背景知识,调用复制构造函数的三种情况: 1.当用类一个对象去初始化另一个对象时. 2.如果函数形参是类对象. 3.如果函数返回值是类对象,函数执行完成返回调用时. 在辅导学生上机时,有同学第3点提出异议.有教材上的例题为证: #include <iostream> using namespace std; class Point //Point 类的定义 { public: Point(int xx=0, int yy=0) { x = xx; //构造函数,内联 y = yy; } P
Item 12-复制对象时忽忘其每一个成分(Copy all parts of an object) 设计良好之面向对象系统(OO-system)会将对象的内部封装起来,只留两个函数负责将对象拷贝(复制),那便是带着适切名称的copy构造函数和copy assignment操作符,称它们为copying函数. 如果是"编译器生成版本"的行为:将被拷对象的所有成员变量都做一份拷贝. 如果是自己声明就要注意了. 如果是为"derived class撰写copying函数"