C++/Python嵌套对比
def as_view():
print("1\n")
def view():
print("2\n")
return view;
a=as_view
a()()
#include<iostream>
using namespace std;
auto as_view()
{
cout<<"1\n";
auto view = []() // 使用Lambda函数定义a,c++嵌套真这样做
{
cout<<"2\n";
};
return view;
}
int main()
{
auto (*a)()=as_view;//函数指针
a()();
system("pause");
return 0;
}
Python循环方法
for row in matrix: # row是每一行的list
for element in row:
print(element, end=' ')
print() # 换行
for a, b in matrix:
print(a, b)
for i in range(len(matrix)):
for j in range(len(matrix[0])):
print(matrix[i][j])
关于虚函数和虚基类
1. 接口
C++抽象类
抽象类包含至少一个纯虚函数的类,其他都可以包含,抽象类无法被实例化。纯虚函数不能在抽象类中实现,否则就是普通虚函数。
virtual void makeSound() const = 0; //这个传虚函数在派生类中必须用覆盖实现一下,充当接口使用
Java接口
public class 类名 implements 接口
2. Override
Java
表示一个方法覆盖(@Override)了父类或接口的虚函数方法,Java 中所有非静态方法(非 private、final(final参数的值不能被修改 类似于const)、static)默认就是“虚函数”,无需显式声明。
C++
C++的override 写在函数()后面{}之前,但之前需要用virtual声明
3. 继承
Java
关于虚基类,java不支持多重继承:Java 类只能单继承(一个直接父类),因此不存在菱形继承问题。
java可以多层单继承
class A {} // 基类
class B extends A {} // B 继承 A
class C extends A {} // C 继承 A
不支持多重继承如
class D extends B, C {}
C++
对应C++继承是
class 类名 : public 类名
虚基类
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {}; // D 中只有一份 A 的实例